我正在使用maven-assembly-plugin为我的多模块项目创建一个分发程序集(格式为“dir”)。该项目看起来像这样:
+ my-project
+-- my-child-project-1
+-- my-child-project-2
子项目继承自my-project
。 my-project
是一个聚合,即在<modules>
- 部分中定义子项目。
程序集包含工件,源等。如何设置项目以包含站点?
my-project
网站指向子模块的链接必须有效。据我所知,链接在部署之前不起作用。因此,我想我必须首先(?)阶段部署网站。根据{{3}},只有在创建网站后才能进行分段:
此目标要求已使用网站目标生成网站,例如通过调用mvn网站。
我怎样才能做到这一点?
有没有办法让所有东西都集合在一起mvn package
?我的程序集描述符必须如何?
答案 0 :(得分:0)
我不知道,如果这是一个很好的解决方案,但没有其他答案,所以我提出了这个:
重要提示:我不知道是否有必要,但是如果在根项目中配置了程序集,我没有时间检查它是否也有效。否则,您必须在步骤2中使用不同的分类器在my-project
到my-project
本身中定义依赖项,我认为这不起作用。如果我错了,请随意编辑这个答案。
+ my-project
+-- my-child-project-1
+-- my-child-project-2
+-- my-project-build
site
定义所有模块的依赖关系
<!-- Yes, also for the parent project. However, not for the build project itself -->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>my-project</artifactId>
<version>${project.version}</version>
<classifier>site</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>my-project</artifactId>
<version>${project.version}</version>
<classifier>site</version>
</dependency>
...
dependencySets
。通过将子模块站点内容移动到主模块的站点目录的相应子目录来修复损坏的链接。这个想法是使用由site
- 分类器依赖性生成的site-jar工件并解压缩它们。模块链接是相对的,因此将内容解压缩到其artifactIds命名的子目录中将修复这些链接。
<dependencySets>
<dependencySet>
<outputDirectory>site</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<useProjectAttachments>true</useProjectAttachments>
<unpack>true</unpack>
<includes>
<include>*:my-project:jar:site</include>
</includes>
</dependencySet>
<!-- sites of sub modules -->
<dependencySet>
<includes>
<include>*:my-child-project-1:jar:site</include>
<include>*:my-child-project-2:jar:site</include>
<include>*:my-project-build:jar:site</include>
</includes>
<outputDirectory>site/${artifact.artifactId}</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<useProjectAttachments>true</useProjectAttachments>
<unpack>true</unpack>
</dependencySet>
<!-- sites of sub-sub modules (if required) -->
<dependencySet>
<includes>
...
</includes>
<outputDirectory>site/${artifact.parent.artifactId}/${artifact.artifactId}</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<useProjectAttachments>true</useProjectAttachments>
<unpack>true</unpack>
</dependencySet>
...
</dependencySets>
site:jar
目标默认情况下,此目标在package
阶段执行,并生成“site”-attachments(例如my-parent-1.0.0-site.jar
),它们在步骤2中定义为依赖项并在步骤3中解压缩:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.4</version>
<executions>
<execution>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
mvn package
以生成程序集结果是程序集中的子目录“site”,其中包含带有工作链接的完整站点。