gpt4 book ai didi

java - 如何生成目录作为 Maven Artifact

转载 作者:行者123 更新时间:2023-11-30 03:54:41 25 4
gpt4 key购买 nike

我目前正在努力改变遗留项目的构建过程。目前它是由定制解决方案构建的,我们的目标是将其调整为标准解决方案 - 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-assemble-plugin 将它们组合在一起,但我我不完全确定如何(如果有的话)正确地完成它。我仍然不确定它是否最适合我,我将非常感谢任何反馈。

最佳答案

你的方法是正确的(imo):Maven 是一个用于生成可部署 Artifact 的好工具。并且 maven-assemble-plugin 满足您所描述的需求。它可以生成一个包含您所描述的应用程序结构的 ZIP 文件。

Maven 生成的默认 Artifact 类型只是一个 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)

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

关于java - 如何生成目录作为 Maven Artifact ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23533553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com