Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将目录生成为maven工件_Java_Maven_Build - Fatal编程技术网

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)可能有点困难,也有点耗时。