当前位置: 首页 > 知识库问答 >
问题:

Maven-在多模块项目中使用汇编插件创建分发文件

范翰海
2023-03-14
    null

每个模块都有自己的POM,包含如何包装的说明;

<packaging>war</packaging>

然后,父POM负责在每个模块上启动Maven生命周期,并将其推送到工件管理器(Nexus)

<modules>
  <module>module1</module>
   <module>module2....

我想使用汇编插件将每个模块先前构建的WAR文件打包到一个ZIP文件中。我试图通过在父POM中定义一个程序集描述符来实现这一点,该描述符为每个模块定义一个单独的dependencySet(使用groupID、artifactID和version在本地repo中查找WAR)。

<assembly>
  <id>war</id>
  <includeBaseDirectory>false</includeBaseDirectory>
  <formats>
    <format>zip</format>
  </formats>
  <dependencySets>
    <dependencySet>
      <useProjectArtifact>false</useProjectArtifact>
      <includes>
         <include>com:test-web:war:${pom.version}</include>
      </includes>
      <outputFileNameMapping>test-web.war</outputFileNameMapping>
    </dependencySet>
  </dependencySets>
</assembly>

这是我的父POM中的插件配置;

<plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.5.3</version>
                    <executions>
                        <execution>
                            <id>distribution-package</id>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                            <configuration>
                                <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
                                <descriptors>
                                    <descriptor>assembly.xml</descriptor>
                                </descriptors>
                                <formats>
                                    <format>zip</format>
                                </formats>
                                <includeBaseDirectory>false</includeBaseDirectory>
                            </configuration>
                      </execution>
                    </executions>
                </plugin>

这种做法是否走上了正确的轨道?另外,从我的本地回购中拉出WAR文件有意义吗?我应该使用每个子模块目标文件夹中的输出吗?

共有1个答案

边健
2023-03-14

1)在你父母的口袋里,我会像

<modules>
<module>module1</module>
<module>distibution</module>
<module>module2....

(为发行版创建一个额外的模块),以便将父pom与发行版分开。

2)你不应该在每个子模块目标文件夹中使用输出。添加所有WAR作为发行版的依赖项。这样maven就可以知道它必须最后构建发行版。

 类似资料:
  • 我有一个多模块的项目,有两个模块:war和ear模块。我正在尝试使用Maven发行版插件来管理发行版。 我的配置到目前为止... 父POM: war模块POM: ear模块POM: 正如您看到的表单日志,test-war-0.0.1-sources.jar正在上传两次。这是为什么?我怎样才能编辑我的配置,使它只上传一次?

  • 我是maven的新手,在使用程序集插件生成zip文件时花了大约3天的时间,引用了http://www.petrikainulainen.net/programming/tips-and-tricks/creating-a-runnable-binary-distribution-with-maven-assembly-plugin/My project is multi module,所以我还引用

  • 我正在使用Enunciate为多模块Maven项目中的RestEasy服务生成文档。在试图获取响应对象属性的描述时,我在文档生成方面遇到了一些问题。 例如,如果我的服务定义为: 当生成留档时,不生成属性描述。 在我只得到的所有响应对象中(未提供文档)。一个重要的想法是,所有响应类都位于服务所在的不同 Maven 模块中。响应类位于 UTIL 模块中。这些服务位于 EJB 模块中。 问题的原因肯定是

  • 我使用的是IntelliJ IDEA社区版2016.1.3。我正在尝试创建一个maven多模块项目。项目公司是父模块,项目员工和项目技能集是子模块。项目员工和技术人员将有包装作为战争,但项目公司有包装作为POM。 我无法在employee和Skillset下创建一个类。我如何创建一个多模块的项目而没有在父(公司)的src文件夹?

  • 嗨我在网上搜了一遍,看了一堆文章,所以问题和文档都找不到解决办法,这里是我的问题。 我有一个多模块maven项目,其中包含三个模块a、B和C,a和B独立,C依赖于a和B,当然我有一个父项目。我还设置了一个jenkins服务器来构建这些项目,以及一个nexus存储库。 如有任何帮助,不胜感激。谢谢!

  • 问题内容: 我一直在尝试使用Maven Shade插件来获取jar,但是我仍然没有成功。 这是我的项目结构: Module1(pom.xml): Module2(pom.xml): MainModule(pom.xml): 根据这段代码,我得到了2个jar文件(Module1-version.jar和Module2-version.jar)。但这不是我想要的。我希望得到1个jar文件(MainMo