Maven3:如何从1个项目创建3个罐子

时间:2013-02-17 15:19:06

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

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

我希望Maven为每个具有依赖关系的类创建一个jar。

我该怎么做?

3 个答案:

答案 0 :(得分:2)

如果您有三个主要类,每个类都是一个单独的应用程序,那么很可能您应该有四个jar:每个主类一个,一个用于它们之间共享的代码。 Maven非常严格地遵循“每个模块一件神器”的想法,如果你试图反对这一点,那么你将走向一条黑暗而危险的道路。在Maven中表达这种结构的自然方式是五到六个模块:

  1. 项目的根模块,它聚合所有其他模块。这不是一个生产jar的模块。它的包装将是“pom”。
  2. (可选)“父”子模块,所有工件生成模块都继承该子模块。您可以使用此模块来建立常见的依赖版本,设置所有模块所需的存储库等。这也将打包设置为“pom”。它是可选的,因为项目根目录下的聚合器模块也可以填充这个角色,但是在代码中,关注点的分离是好的。 "POM Best Practices" in the Sonatype book已涵盖此主题。
  3. 包含三个主要类别之间共享的所有代码的子模块。
  4. 4-6:每个主类的子模块以及特定于该主类/应用程序的支持代码和配置。

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

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

    然后,您可以使用类似assembly pluginappassembler的内容来创建具有适当配置,库和启动脚本的发行版,这些内容都打包在一起。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

你真的不应该这样做。请阅读this,其中也链接到another SO帖子。