gpt4 book ai didi

maven - 加速多个模块的 Maven 组装

转载 作者:行者123 更新时间:2023-12-04 12:55:02 27 4
gpt4 key购买 nike

我有以下形式的项目

- pom.xml
- projectA
- pom.xml
- src/main/
- java
- startupScript
- projectB
- pom.xml
- src/main/
- java
- startupScript
- projectAssembly
- pom.xml

我要 projectAssembly生成一个包含两个文件夹的 tar.gz,一个用于 projectA,一个用于 projectB,在每个文件夹中,都会有项目的依赖项和 startupScript图书馆。

“天真的”方法是添加 assembly.xml文件到每个项目,文件大致如下:
<assembly>
<formats>
<format>tar.gz</format>
</formats>
<baseDirectory>/${project.artifactId}</baseDirectory>
<fileSets>
<fileSet>
<directory>${basedir}/src/main/startupScripts</directory>
<outputDirectory>/startupScripts</outputDirectory>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>/lib</outputDirectory>
</dependencySet>
</dependencySets>
</assembly>

然后,在 projectAssembly , 取决于 <type>tar.gz</type>两者的 projectAprojectB , 并添加一个大致如下的程序集文件
<assembly>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<unpack>true</unpack>
</dependencySet>
</dependencySets>
</assembly>

这可行,但是,我不需要中间 tar.gz项目 AB ,并且生产它们,特别是如果它们有很多依赖项,需要很长时间。

如何告诉 maven 只直接组装 projectAssembly 的 tar.gz不浪费时间打包和拆包中间文件?

最佳答案

您在 projectAssembly 中的程序集描述符需要看起来像这样(请参阅内部注释):

<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>bin</id>
<formats>
<format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<moduleSets>
<moduleSet>

<!-- Enable access to all projects in the current multimodule build! -->
<useAllReactorProjects>true</useAllReactorProjects>

<!-- Now, select which projects to include in this module-set. -->
<includes>
<include>*:projectA</include>
<include>*:projectB</include>
</includes>

<!-- Select and map resources from each module -->
<sources>
<includeModuleDirectory>false</includeModuleDirectory>
<fileSets>
<fileSet>
<directory>src/main/startupScript</directory>
<outputDirectory>${module.artifactId}/startupScript</outputDirectory>
</fileSet>
</fileSets>
</sources>

<!-- Select and map dependencies from each module -->
<binaries>
<dependencySets>
<dependencySet>
<outputDirectory>${module.artifactId}/lib</outputDirectory>
</dependencySet>
</dependencySets>
</binaries>
</moduleSet>
</moduleSets>
</assembly>

我相信那将是您所需要的。如果不让我们知道..

关于maven - 加速多个模块的 Maven 组装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15894283/

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