我有一个带有2个模块的Maven父项目。构建父项目时,我想使用与pom.xml中使用的artifactId不同的名称来生成并安装最终的工件。我可以看到生成的工件确实具有要在构建目录中使用的名称。但是,当将存档安装在本地Maven存储库中时,maven-install-plugin使用项目的artifactId复制工件。如何在不使用artifactId的情况下配置插件以安装工件?
我的子项目的pom.xml:
<project>
<parent>
<groupId>com.mycomp</groupId>
<artifactId>com-mycomp</artifactId>
<version>12.0.0.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycomp</groupId>
<artifactId>child1</artifactId>
<version>12.0.0.0.0</version>
<build>
<defaultGoal>install</defaultGoal>
<finalName>${parent.artifactId}-${project.version}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<includeScope>runtime</includeScope>
<outputDirectory>${project.build.directory}/dependencies/</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>assembly:package</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/resources/dependencies.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.2</version>
<configuration>
<archive>
<manifest>
<classpathPrefix>libs/</classpathPrefix>
<addClasspath>true</addClasspath>
<mainClass>com.my.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
父pom.xml:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycomp</groupId>
<artifactId>com-mycomp</artifactId>
<version>12.0.0.0.0</version>
<packaging>pom</packaging>
<modules>
<module>child1</module>
<module>child2</module>
</modules>
:
:
</project>
所需的mvn clean install输出: 1)本地maven存储库中的com-mycomp-12.0.0.0.0.jar 2)com-mycomp-12.0.0.0.0.zip,包含上述jar及其依赖项。
观察到的行为: 3)在构建目录中创建com-mycomp-12.0.0.0.0.jar。但是它作为child1-12.0.0.0.0.jar安装在maven存储库中 4)在构建目录中创建com-mycomp-12.0.0.0.0.zip。但是它以child1-12.0.0.0.0.zip
的形式安装在maven存储库中。如何实现所需的行为(#1和#2)?
答案 0 :(得分:0)
本地存储库中的工件始终使用其artifactId进行安装。
您无法更改。即使您可以,我也强烈建议您这样做,因为您超出了期望。
如果要创建一个包含具有依赖项的jar的附加zip,则不需要第二个模块。您可以通过Assembly插件创建它,并附加一个dependencies
这样的分类器。然后,您有两个工件,例如
com-mycomp-12.0.0.0.0.jar
com-mycomp-12.0.0.0.0-dependencies.zip