我有一个带有n ***(多个)模块项目的多模块Apache Maven 3.3.3项目:
/mvnModular
/modules
/modules /mainApp /pom.xml
/modules /module1 /pom.xml
/modules /module2 /pom.xml
/modules /moduleChat /pom.xml
/modules /moduleBlog /pom.xml
...
模块只有一个文件pom.xml:
<groupId>mainmod.modules</groupId>
<artifactId>modules</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>..\mainApp\pom.xml</module>
<module>..\module1\pom.xml</module>
<module>..\module2\pom.xml</module>
<module>..\moduleChat\pom.xml</module>
<module>..\moduleBlog\pom.xml</module>
</modules>
...
如何将各个模块项目中的所有.jar文件添加到项目根文件夹mvnModular中名为lib的文件夹中?
这就是我最后想要的:
/mvnModular
mainApp.jar
/lib
/lib /module1.jar
/lib /module2.jar
/lib /moduleChat.jar
/lib /moduleBlog.jar
.....
各个模块都有一个 pom.xml 文件,如下所示:
<parent>
<groupId>mainmod.modules</groupId>
<artifactId>modules</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../modules/pom.xml</relativePath>
</parent>
<groupId>mainmod.modules.module2</groupId>
<artifactId>module2</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>module1</name>
更新
我们的想法是以一种方式编写应用程序,用户将在根mvnModular文件夹中下载包含mainApp.jar的项目mainApp
,这是主要项目。然后可以通过将模块添加到mvnModular根目录中名为packages的文件夹来扩展应用程序(mainApp.jar)。
答案 0 :(得分:1)
您可以使用 maven-antrun-plugin 。这必须添加到每个模块中。
检查下面的示例。
父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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>TestMavenModules</groupId>
<artifactId>TestMavenModules</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>Module1</module>
<module>Module2</module>
</modules>
</project>
Module1 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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>TestMavenModules</groupId>
<artifactId>TestMavenModules</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>Module</artifactId>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>package</phase>
<configuration>
<target>
<copy
file="${project.build.directory}/${project.artifactId}-${project.version}.jar"
todir="../PackagedJars" />
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Module2 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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>TestMavenModules</groupId>
<artifactId>TestMavenModules</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>Module2</artifactId>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>package</phase>
<configuration>
<target>
<copy
file="${project.build.directory}/${project.artifactId}-${project.version}.jar"
todir="../PackagedJars" />
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
最后,您将在根目录中的PackagedJars目录中拥有jar。
/PackagedJars
----/Module1-0.0.1-SNAPSHOT.jar
----/Module2-0.0.1-SNAPSHOT.jar