如何将目录生成为maven工件

时间:2014-05-08 05:38:20

标签: java maven build

我目前正致力于改变遗留项目的构建过程。现在,它是由定制解决方案构建的,我们的目标是将其调整为标准解决方案 - maven

这是一个独立的应用程序,构建的当前输出是具有以下结构的目录:

 OUR_APPLICATION
 |
 |_bin
 | |_start.sh
 | |_stop.sh
 |
 |_etc
 | |_app.properties
 |
 |_jar
 | |_app_classes1.jar
 | |_app_classes2.jar
 |
 |_lib
   |_third_party_library.jar

我想知道用maven实现类似输出的最佳方式是什么,并且仍然遵循最佳实践(或者至少尽可能少地打破它们)。

我倾向于创建多模块项目(Java代码,配置文件和shell脚本的单独模块),然后使用maven-assembly-plugin将它们组合在一起,但我不是完全确定如何(如果有的话)可以正确完成。 我仍然不确定它是否最适合我,我会非常感谢任何反馈。

1 个答案:

答案 0 :(得分:2)

你是正确的方式(imo):Maven是一个生成可部署工件的好工具。 maven-assembly-plugin符合您描述的需求。它可以生成包含您描述的应用程序结构的ZIP文件。

Maven生成的默认工件类型只是一个JAR。这对图书馆来说没问题。您描述的应用程序结构似乎有三个:app_classe1.jarapp_classes2.jarthird_party_library.jar(我知道,可能会有更多)。

我建议的Maven设置(并记住:存在其他方式):创建一个多模块项目,其中包含每个应用程序JAR的模块和一个用于组装它们的模块。然后父项目简单地构建它们。像这样:

ParentProject
 |
 |-- pom.xml (the parent one, that describes all modules)
 |
 |-- Module1 (producing app_classes1.jar)
 |    |
 |    |-- pom.xml
 |    |-- src/...
 |
 |-- Module2 (producing app_classes2.jar)
 |    |
 |    |-- pom.xml
 |    |-- src/...
 |
 |-- AssemblyModule (the one that produces a ZIP, for example)
      |
      |-- pom.xml (with type POM because it does not produce a JAR)

程序集模块不应具有默认工件类型(JAR),但应设置为键入POM。该程序集模块的pom.xml然后配置maven-assembly-plugin以创建ZIP文件。此ZIP文件的内容具有高度可配置性。此外,此插件将结果工件(ZIP)附加到构建,以便将其上载到存储库(如果已配置)。