为什么每次都要用maven重新打包war和ear?您使用 eclipse 的动态 Web 项目吗?(其实我不知道它是否符合你的要求,你可能已经很了解了,但没有足够的声誉来询问细节)。
使用 maven 生成一个草稿 WEBAPP
mvn archetype:generate -DgroupId=org.yourgroup -DartifactId=MavenTestWebapp -DarchetypeArtifactId=maven-archetype-webapp
MavenTestWebapp
|
\--- JavaSources
| \MyClass.java
|
\--- War
| | ---(pom.xml)
| \ --- src
| \ --- main
| \ --- webapp
| | --- META-INF
| \ --- WEB-INF
|
\(pom.xml)
War 目录是项目的一个模块。我添加了一个 JavaSources 目录以使其清晰。我还在 War 目录中添加了一个 pom.xml,以便处理来自父项目的依赖库。以下是 War 目录中 pom 的示例:
<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 compile命令。然后在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 的动态 Web 项目将允许在 glassfish 上快速重新部署 java 类。
创建一个动态的 WEB 项目
在工作区中创建一个新的动态 Web 项目。在 Web 模块配置步骤,将JavaSources设置为该项目的 Java 源目录。将webapp设置为内容目录。
这个 webapp 包含你的 web 开发人员必须处理、编译和部署的所有类。它还包含一个带有库和编译类的完整战争模块。
创建一个耳朵
在工作区中创建一个新的企业应用程序项目。将 webapp 添加为该项目的模块。
在 glassfish 上部署 EAR
在服务器视图中,右键单击 glassfish 服务器并添加新创建的包含 MavenTestWebapp Web 模块的 EAR。每次修改 java 类时,将此 EAR 发布到您的服务器。您可以允许自动发布,但这通常很烦人。
谢谢
如果有更好的解决方案,如果它可以改进或者它不适合您的项目,请告诉我们。我没有那么多经验,但我以前一直在使用这种配置,它可能适用于快速重新部署您的 java 源。谢谢,@+