为什么每次都要用maven重新打包战争和耳朵呢?你使用eclipse的动态web项目吗? (我其实不知道它是否符合你的要求,你可能已经知道一切,但没有足够的声誉来要求详细信息)。
生成与行家一个WEBAPP草案
MVN原型:生成-DgroupId = org.yourgroup -DartifactId = MavenTestWebapp -DarchetypeArtifactId =行家-原型-web应用
MavenTestWebapp
|
\--- JavaSources
| \MyClass.java
|
\--- War
| | ---(pom.xml)
| \ --- src
| \ --- main
| \ --- webapp
| | --- META-INF
| \ --- WEB-INF
|
\(pom.xml)
战争目录是一个该项目的模块。我添加了一个JavaSources目录来清除它。我还在War目录中添加了一个pom.xml,以便处理父项目中的依赖项库。下面是在战争目录中的聚甲醛的例子:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.yourgroup</groupId>
<artifactId>MavenTestWebapp</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<groupId>${project.parent.groupId}</groupId>
<artifactId>${project.parent.artifactId}-war</artifactId>
<name>${project.parent.artifactId}-war</name>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<url>http://maven.apache.org</url>
<build>
<finalName>MavenTestWebapp-war</finalName>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>inplace</goal>
</goals>
</execution>
</executions>
<configuration>
<archiveClasses>true</archiveClasses>
<warSourceDirectory>${basedir}/src/main/webapp/</warSourceDirectory>
<dependentWarExcludes>
WEB-INF/classes/,META-INF/**,WEB-INF/web.xml,**/*.jar,pom.xml
</dependentWarExcludes>
<warSourceExcludes>/src/main/webapp/,target/,WEB-INF/classes/**/*.*</warSourceExcludes>
<webResources>
<resource>
<!-- this is relative to the pom.xml directory -->
<directory>${basedir}</directory>
<!-- the list has a default value of ** -->
<includes>
<include>pom.xml</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
</project>
为了收集依赖库,执行MVN编译命令。然后在webapp/WEB-INF目录中创建lib目录。
MavenTestWebapp
|
\--- JavaSources
| \MyClass.java
|
\--- War
| | ---(pom.xml)
| \ --- src
| \ --- main
| \ --- webapp
| | --- META-INF
| \ --- WEB-INF
| \ --- libs
| | --- dependency-lib1.jar
| \ --- dependency-lib2.jar
|
\(pom.xml)
这是我们最后一次使用maven,直到我们在真正的包装之前运行junit测试和其他功能。但目前,我们只需要编译和部署Java类进行测试(对吧?)。 Eclipse的Dynamic Web Projects将允许在glassfish上快速重新部署Java类。
创建动态Web项目
创建工作区中的新的动态Web项目。在Web模块配置步骤中,将JavaSources设置为此项目的Java源代码目录。作为内容目录设置webapp。
此webapp包含您的web开发人员必须处理,编译和部署的所有类。它还包含一个带有库和编译类的完整的war模块。
创建EAR
在工作区中创建一个新的企业应用程序项目。添加webapp作为这个项目的一个模块。
部署到GlassFish中
在服务器视图中的EAR,右键单击GlassFish服务器,并添加含有MavenTestWebapp Web模块新创建的EAR。每次修改java类时,都要将此EAR发布到您的服务器。您可以允许自动发布,但通常很烦人。
THANKS
如果有一个更好的解决方案,如果它可以改进,或者如果它不适合你的项目,让我们遇到了才知道。我没有那么多的经验,但是我之前一直在使用这种配置,并且它可能适用于快速重新部署Java源代码。谢谢,@ +
这取决于你的项目结构。如果您的WAR没有任何与EAR lib文件夹或EJB的依赖关系,则应该单独部署WAR(或特定的Web项目)。如果存在依赖关系,则可能必须分开部署EJB。 – unwichtich