我们有一个与我们合作的人使用maven-assembly-plugin打包所有依赖项。他已离开公司,我试图弄清楚他是如何做到这一点的。我刚刚学习maven-assembly-plugin。
我们的应用程序分为Maven POM项目和相关的模块项目。在以下示例中,我包含了运行时模块项目。我试图在我的应用程序中创建一个名为runtime的模块项目,但是当我做出任何更改时,它会丢失与父项目的关联。
我们正在使用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
在做了一些研究之后,我想我可能会把车推到马前。我已经有一个包含模块项目的主项目。
以下是一些有用的问题和答案,但我仍然感到困惑。有人可以告诉我先做什么吗?
Maven assembly on multi module project with special structure
How to use Maven assembly plugin with multi module maven project
修改
我弄清楚为什么模块从我的主项目中消失了。 Netbeans !! 我重启了它,我的运行时模块就在那里。
那么,现在我需要在运行时模块中编辑我的POM文件吗?
答案 0 :(得分:2)
如果我正确地阅读了您的问题,您要做的是将一个新的Maven模块(称为runtime
)添加到现有项目中,并使用此新项目上的maven-assembly-plugin
对其进行打包。
然后第一步是创建Maven模块。我不确定Netbeans是否提供了这样做的工具(Eclise确实如此),但它归结为:
<modules>
部分中<module>
添加新的runtime
。runtime
的新文件夹
在这个新文件夹中创建一个文件pom.xml
,将根POM声明为父POM,如下所示:
<parent>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
</parent>
然后,您需要配置maven-assembly-plugin
来执行此新模块的打包。这是在汇编描述符的帮助下完成的,汇编描述符的格式为documented here。
为了给您一些开始,请考虑以下POM配置和程序集描述符,它会将config
,data
和scripts
下的所有内容打包到一个zip文件中:< / p>
<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>
在父POM上运行mvn clean install
后,将在模块target
的{{1}}目录下创建一个zip文件。它将包含3个指定的文件夹。