Java 如何将目录生成为maven工件
我目前正在修改遗留项目的构建过程。现在,它是由一个定制的解决方案构建的,我们的目标是将它调整为标准的-Java 如何将目录生成为maven工件,java,maven,build,Java,Maven,Build,我目前正在修改遗留项目的构建过程。现在,它是由一个定制的解决方案构建的,我们的目标是将它调整为标准的-maven 这是一个独立的应用程序,生成的当前输出是具有以下结构的目录: OUR_APPLICATION | |_bin | |_start.sh | |_stop.sh | |_etc | |_app.properties | |_jar | |_app_classes1.jar | |_app_classes2.jar | |_lib |_third_par
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
将其组合在一起,但我不完全确定如何正确地完成(如果有的话)。
不过,我不确定它是否最适合我,如果有任何反馈,我将非常感激。你走对了(imo):Maven是一个生成可部署工件的好工具。而
maven汇编插件
符合您描述的需求。它可以生成一个包含您描述的应用程序结构的ZIP文件
Maven生成的默认工件类型只是一个JAR。这对图书馆来说没问题。您描述的应用程序结构似乎有三种:app_classe1.jar
,app_classes2.jar
,以及第三方库.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程序集插件以创建ZIP文件。此ZIP文件的内容是高度可配置的。此外,该插件将结果工件(ZIP)附加到构建中,以便将其上载到存储库(如果也配置了存储库的话)。
maven assembly plugin
确实是一个不错的选择。我的项目结构与您描述的类似,尽管我需要做一些润色,但它已经大致产生了我首先需要的东西。@Blekit我只描述了整体机制。不过,微调汇编插件(和POM)可能有点困难,也有点耗时。