我目前正致力于改变遗留项目的构建过程。现在,它是由定制解决方案构建的,我们的目标是将其调整为标准解决方案 - 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
将它们组合在一起,但我不是完全确定如何(如果有的话)可以正确完成。
我仍然不确定它是否最适合我,我会非常感谢任何反馈。
答案 0 :(得分:2)
你是正确的方式(imo):Maven是一个生成可部署工件的好工具。 maven-assembly-plugin
符合您描述的需求。它可以生成包含您描述的应用程序结构的ZIP文件。
Maven生成的默认工件类型只是一个JAR。这对图书馆来说没问题。您描述的应用程序结构似乎有三个:app_classe1.jar
,app_classes2.jar
和third_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)附加到构建,以便将其上载到存储库(如果已配置)。