gpt4 book ai didi

java - 如何在 Maven 中整合来自子项目的构建 Artifact ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:22:27 25 4
gpt4 key购买 nike

很抱歉,如果这在其他地方有所涉及,恐怕我找不到这个特别琐碎问题的答案。

我有一个 Maven 项目,它引用并构建了 4 个子项目(作为 bundle )。我已经正确设置了子项目之间的依赖关系,最终我构建了 4 个不同的 .jar 文件:

  • parentproj/sub1/target/sub1.jar
  • parentproj/sub2/target/sub2.jar
  • parentproj/sub3/target/sub3.jar
  • parentproj/sub4/target/sub4.jar

我的问题是,如何设置 mu parent 构建,以便在从主 .POM 文件构建时,所有 4 个 jar 都放在“/parentproj/target/...”中?

另一个问题是,我如何构建一个 xxxx-ALL.jar(合并这 4 个包的内容)?

最佳答案

只需使用 Maven Assembly plugin使用“dir”格式将它们全部放在一个文件夹中,使用“jar”格式将它们分组到一个 jar 中。

更多细节:

  1. 您从 Maven 项目开始(我们称它们为子项目)
  2. 创建一个新的 maven 项目(pom 打包),使用 标签聚合所有子项目
  3. 将程序集插件放入您的 pom.xml 文件中(见下文)
  4. 创建正确的 assembly.xml 文件(见下文)

pom.xml 文件:

<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>distro-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<finalName>somefolder</finalName>
<attach>false</attach>
<descriptors>
<descriptor>assembly.xml</descriptor>
</descriptors>
<phase>package</phase>
</configuration>
</execution>
</executions>
</plugin>

assembly.xml 文件:

<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>SomeName</id>
<formats>
<format>dir</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<baseDirectory></baseDirectory>

<fileSets>
<fileSet>
<directory>appfiles</directory>
<includes>
<include>**</include>
</includes>
<outputDirectory>.</outputDirectory>
</fileSet>
</fileSets>

<moduleSets>
<moduleSet>
<!-- useAllReactorProjects must be false if the assembly's run on the project with the module list -->
<useAllReactorProjects>false</useAllReactorProjects>
<includeSubModules>false</includeSubModules>

<binaries>
<includeDependencies>true</includeDependencies>
<outputDirectory>bundle</outputDirectory>
<unpack>false</unpack>
</binaries>
</moduleSet>
</moduleSets>

关于java - 如何在 Maven 中整合来自子项目的构建 Artifact ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10472406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com