Maven 2 如何在同一个项目中组合库代码和maven插件?

Maven 2 如何在同一个项目中组合库代码和maven插件?,maven-2,maven-plugin,Maven 2,Maven Plugin,我可以创建一个单独的maven项目,作为依赖项(引用其中的Java类)包含并作为插件执行吗 我正在开发一个库,以帮助在一个LAMP堆栈上托管GWT。对于要使用它的人来说,他们需要扩展一些Java类(所以它必须是一个依赖项),并且需要调用一个maven插件(所以它必须是一个插件)。插件代码引用相同的Java类,因此,如果它们是独立的项目,插件代码必须依赖于库代码 现在,我将库作为一个普通的maven项目,插件作为一个依赖于库的maven插件。这意味着要发布一个版本,我必须发布两个不同的工件,并且依

我可以创建一个单独的maven项目,作为依赖项(引用其中的Java类)包含并作为插件执行吗

我正在开发一个库,以帮助在一个LAMP堆栈上托管GWT。对于要使用它的人来说,他们需要扩展一些Java类(所以它必须是一个依赖项),并且需要调用一个maven插件(所以它必须是一个插件)。插件代码引用相同的Java类,因此,如果它们是独立的项目,插件代码必须依赖于库代码


现在,我将库作为一个普通的maven项目,插件作为一个依赖于库的maven插件。这意味着要发布一个版本,我必须发布两个不同的工件,并且依赖项目必须更新这两个工件的两个版本号。拥有一个项目就好了。

如果你创建一个maven插件,它仍然有一个artifactId/groupId/version。没有理由它不能在你的部分和你的部分中作为参考。另一方面,如果这很难看,为什么不用主项目和maven插件项目都依赖的公共代码创建一个库呢

编辑:


对不起,第二部分不清楚。看看复合maven项目,其中有一个顶级pom定义了许多子模块。在这种情况下,maven插件和公共库代码可以是单独的子代码,生成单独的工件,但您只需要从顶层执行一个版本号和一个发布命令。我还没有这样做,但是有很多开源项目可以这样做。它经常被用作一种习惯用法,将测试代码放入一个可供所有其他模块引用的模块中,而无需将其放入任何可分发的jar中。

您最好执行以下操作

  • jar的项目,Foo:Foo.jar
  • 使用Foo:Foo.jar作为 构建插件的依赖项
  • 那 构建1和2
  • 目录结构如下所示

    \project\pom.xml
    \project\foo\pom.xml
    \project\foo\src\main\java\foo.java
    \project\plugin\pom.xml
    \project\plugin\src\main\resources
    \project\plugin\src\main\java
    
    您可以从\project执行
    mvn清理包
    来构建
    \project\foo\target\foo.jar
    \project\plugin\target\plugin.jar


    希望这能有所帮助。

    最好的做法是不要做你建议的事情。这方面的例子包括PMD、BND、JUnit/TestNG等等——似乎没有任何严肃的项目将maven插件与库一起打包


    获得这两个备选方案的一种方法是使用maven程序集为每个库和插件分别创建两个独立的maven项目,然后将它们单独打包为一个包含这两个类的jar。

    我同意将通用代码放在一个单独的项目中,而不是丑陋的构建/自引用。首先,它保证您将始终拥有循环引用。