gpt4 book ai didi

java - 多模块项目的 Maven 组装插件入门

转载 作者:行者123 更新时间:2023-11-30 03:13:47 26 4
gpt4 key购买 nike

我们有一个人和我们一起工作,他使用 maven-assemble-plugin 来打包所有依赖项。他后来离开了公司,我正在努力弄清楚他是如何做到这一点的。我现在刚刚学习 maven- assembly-plugin 。

我们的应用程序被分成一个 Maven POM 项目以及关联的模块项目。在下面的示例中,我包含了运行时模块项目。我尝试在我的应用程序中创建一个名为运行时的模块项目,但是当我进行任何更改时,它就会失去与父项目的关联。

我们正在使用 Netbeans。

+- pom.xml
+- Simulator
+- pom.xml
+- comms
+- pom.xml
+- src
+- main
+- java
+- framework
+- pom.xml
+- src
+- main
+- java
+- core
+- pom.xml
+- src
+- main
+- java

这就是我想要创建的:

+- runtime 
+- pom.xml
+- src
+- assemble
+- assembly (xml file)
+- target
+- Simulator
+- archive-tmp
+- classes
+- test-classes
+- Simulator (zip file)
+- config
+- data
+- scripts

做了更多研究后,我想我可能本末倒置了。我已经有一个包含模块项目的主项目。

  1. 那么下一步到底是什么?
  2. 创建程序集描述 rune 件?
  3. 将我的主 pom 文件编辑为父文件?

以下是一些有用的问题和答案,但我仍然很困惑。有人可以告诉我先做什么吗?

Maven assembly on multi module project with special structure

How to use Maven assembly plugin with multi module maven project

编辑:

我弄清楚了为什么该模块从我的主项目中消失了。 Netbeans!!我重新启动了它,我的运行时模块就在那里。

那么,现在我需要在运行时模块中编辑 POM 文件吗?

最佳答案

如果我没看错你的问题,你想要做的就是向现有项目添加一个新的 Maven 模块(称为 runtime )并使用 maven-assembly-plugin在这个新项目上对其进行打包。

第一步是创建 Maven 模块。我不确定 Netbeans 是否提供了执行此操作的工具(Eclise 提供了),但它归结为:

  • <modules>父 POM 部分,添加新的 <module>对于 runtime .
  • 创建一个名为 runtime 的新文件夹位于父 POM 的同一目录级别
  • 创建文件 pom.xml在这个新文件夹中,将根 POM 声明为父 POM,如下所示:

    <parent>
    <groupId>...</groupId>
    <artifactId>...</artifactId>
    <version>...</version>
    </parent>

然后,您需要配置 maven-assembly-plugin 来封装这个新模块。这是在程序集描述符的帮助下完成的,其格式为 documented here .

为了给您一些开始,请考虑以下 POM 配置和程序集描述符,它将打包 config 下的所有内容。 , datascripts在 zip 文件中:

<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/assemble/assembly.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>

assembly.xml :

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
<id>distribution</id>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>config</directory>
<outputDirectory>/config</outputDirectory>
</fileSet>
<fileSet>
<directory>data</directory>
<outputDirectory>/data</outputDirectory>
</fileSet>
<fileSet>
<directory>scripts</directory>
<outputDirectory>/scripts</outputDirectory>
</fileSet>
</fileSets>
</assembly>

运行后mvn clean install在父 POM 上,将在 target 下创建一个 zip 文件。模块目录runtime 。它将包含 3 个指定的文件夹。

关于java - 多模块项目的 Maven 组装插件入门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33088454/

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