项目A里面有控制器。所以为它制造战争不是问题。
但是项目B需要Controller的项目A控制器。
任何机构都可以告诉我如何从项目A的控制器生成jar文件,我可以在项目B中使用它?
答案 0 :(得分:13)
这种方法的默认解决方案是有两个单独的模块用于战争,一个用于控制器模块。不要开始与Maven战斗。
答案 1 :(得分:0)
将项目A的包装视为战争。将maven jar插件添加到项目A的pom.xml中。用" mvn clean package jar:jar"构建项目。它会创造一个罐子和战争。
答案 2 :(得分:0)
正如@Shashank所指出的,你可以让maven也执行maven-jar-plugin。但这只会创建一个JAR,它只包含已编译的类,但不包含webapp源。
如果只使用简单的mvn clean install
命令在没有显式调用mvn clean install jar:jar
的情况下,如何在多模块项目中执行此操作很简单:
只需将maven-jar-plugin
添加到>build>plugins
,然后在“套餐”阶段调用它:
<project>
<packaging>war</packaging>
<!-- .. -->
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<classifier>classes</classifier>
</configuration>
<executions>
<execution>
<id>package-jar</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
这将创建一个大的.war和一个较小的-classes.jar工件。
更新2017-06-15 :另一方面,如果需要war文件的精确副本(不仅是打包的java类),这是某种被屏蔽为JAR文件,您可以使用maven-dependency-plugin
和maven-install-plugin
的组合来创建WAR的JAR副本。 (我碰巧需要这样的解决方案 - 不要问为什么;)
创建一个依赖于war模块的新模块:
<project>
<!-- ... -->
<dependencies>
<!-- ... -->
<dependency>
<groupId>your-group-id-here</groupId>
<artifactId>your-war-artifact-id-here</artifactId>
<version>${project.version}</version>
<type>war</type>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
</execution>
</executions>
<configuration>
<artifactItems>
<artifactItem>
<groupId>your-group-id-here</groupId>
<artifactId>your-war-artifact-id-here</artifactId>
<version>${project.version}</version>
<type>war</type>
<overWrite>true</overWrite>
<destFileName>jar-copy-of-war.jar</destFileName>
</artifactItem>
</artifactItems>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
</configuration>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<executions>
<execution>
<id>install-copy-of-war</id>
<phase>install</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<packaging>jar</packaging>
<classifier>copy-of-war</classifier>
<artifactId>${project.artifactId}</artifactId>
<groupId>your-group-id-here</groupId>
<version>${project.version}</version>
<file>${project.build.directory}/dependency/jar-copy-of-war.jar</file>
<generatePom>true</generatePom>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
这将创建战争的副本,将其命名为“--copy-of-war.jar”,而“copy-of-war”是此模块的分类器。
答案 3 :(得分:-3)
您可以在同一个项目中同时生成并安装, 1.要生成jar,请使用maven-jar-plugin 2.要安装Jar,请使用maven-install-plugin 3.要部署Jar,请使用maven-deploy-plugin
注意:使用type作为war,默认情况下会生成项目的war文件。
检查以下更详细的配置: http://communitygrids.blogspot.in/2007/11/maven-making-war-and-jar-at-same-time.html