【问题标题】:Maven3: How to create 3 jars from 1 projectMaven3:如何从 1 个项目创建 3 个 jars
【发布时间】:2013-02-17 15:19:05
【问题描述】:

我有一个 java 项目,其中包含 3 个不同的类,每个类都有一个 main()。 我有一个用于整个项目的 pom.xml 文件。

我希望 Maven 为每个类及其依赖项创建一个 jar。

我该怎么做??

【问题讨论】:

    标签: maven-3 maven-plugin maven-assembly-plugin


    【解决方案1】:

    如果您有三个主类,每个类都是一个单独的应用程序,那么您很可能应该有四个 jar:一个用于每个主类,一个用于在它们之间共享的代码。 Maven 与“每个模块一个工件”的想法非常紧密,如果你试图违背这一点,你就会走上一条黑暗而危险的道路。在 Maven 中表达这种结构的自然方式是在五个或六个模块中:

    1. 项目的根模块,它聚合了所有其他模块。这不会是一个 jar 生成模块。它的包装是“pom”。
    2. (可选)“父”子模块,所有生成工件的模块都从该子模块继承。您可以使用此模块来建立公共依赖版本,设置所有模块所需的存储库等。这也将打包设置为“pom”。它是可选的,因为位于项目根目录的聚合器模块也可以扮演这个角色,但就像在代码中一样,关注点分离是好的。 "POM Best Practices" in the Sonatype book 涵盖了该主题。
    3. 一个子模块,包含在三个主要类之间共享的所有代码。

    还有 4-6:每个主类的子模块以及特定于该主类/应用程序的支持代码和配置。

    在文件系统上,此解决方案如下所示:

    <project folder>
      - pom.xml
      - parent-module
        - pom.xml
      - common
        - pom.xml
      - app1
        - pom.xml
      - app2
        - pom.xml
      - app3
        - pom.xml
    

    然后您可以使用 assembly pluginappassembler 之类的东西来创建将适当的配置、库和启动脚本打包在一起的发行版。

    【讨论】:

    • 好的,我会尝试这样做!感谢您的详细解释!
    【解决方案2】:

    您可以使用profiles 执行此操作。 这里有例子(click)

    【讨论】:

      【解决方案3】:

      你真的不应该那样做。请阅读this,它还链接到another SO 帖子。

      【讨论】:

      • 谢谢你的警告——我会试试看能不能把项目分成3个小项目。
      猜你喜欢
      • 2014-07-05
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多