Mar*_*ski 5 maven-plugin maven
我的项目需要使用自定义Maven插件,我正在寻找简单的方法来构建它,最好不要弄乱本地存储库.
让我们考虑简单的项目树:
root-project
|---pom.xml
|---my-library
| \---pom.xml
|---my-maven-plugin
| \---pom.xml
\---my-project
\---pom.xml
Run Code Online (Sandbox Code Playgroud)
root-project有三个子项目列在<modules>里面.最主要的是,my-project使用my-maven-plugin过程中它的建造过程,因此该插件必须先建.
我想做的是简单地运行:
root-project $ mvn package
这应my-maven-plugin首先构建并在构建期间使用它my-project.
不幸的是,这不起作用.Maven在"扫描项目......"阶段停止工作,并显示错误消息:
Unresolveable build extension: Plugin test:my-maven-plugin:1.0 or one of its dependencies could not be resolved: Could not find artifact test:my-maven-plugin:jar:1.0
如果我先做的话,它可以工作
$ cd my-maven-plugin
$ mvn install
$ cd ..
$ mvn package
Run Code Online (Sandbox Code Playgroud)
它看起来不太好.但是,真正的问题是插件依赖于它my-library(这是root的另一个子模块).因此,在构建插件之前,我必须输入库目录并进行安装.随着我添加到插件中的每个"内部"依赖性,事情变得越来越糟.结果是本地存储库中的混乱以及重建项目所需的许多手动步骤.
有没有办法说Maven它应该首先构建插件(使用deps),然后在我的项目构建期间使用它?
小智 3
我建议根据您的情况使用配置文件。您可以考虑root-project的 pom.xml 中的两个配置文件:build-plugin和build-project。模块聚合(<modules>列表)将被移动到这些配置文件中。例如,构建插件配置文件将包含:
<modules>
<module>my-library</module>
<!-- + any other "internal" dependencies needed to build the plugin -->
<module>my-maven-plugin</module>
</modules>
Run Code Online (Sandbox Code Playgroud)
同样, build-project配置文件将包含构建my-project所需的模块列表。然后,
mvn clean install -P 构建插件
mvn clean package -P 构建项目
您的命令将分别调用my-maven-plugin和my-project的构建。这两个命令都将从root-project的目录执行。如果大多数时候您需要按顺序运行它们,一个简单的 shell 脚本就可以完成这项工作...
| 归档时间: |
|
| 查看次数: |
515 次 |
| 最近记录: |