我有一个 maven POM,我想将其用作模板,根据我传递给它的参数生成具有不同名称的 Artifact 。但我不知道如何在运行时指定 artifactId。
如果我参数化 <artifactId>
像这样的元素:
<artifact>foo-${bar}</artifact>
maven 提示:
[警告] 'artifactId' 包含一个表达式,但应该是一个常量。
如果我遗漏
<artifactId>
在 POM 中并尝试在命令行中指定它
mvn -Dproject.artifactId=foo ...
maven 提示:
[错误] 'artifactId' 丢失。
除了诉诸从模板即时生成 POM 文件之外,还有其他技巧可以用来完成此操作吗? [嗯,也许我可以使用 maven 资源过滤来做到这一点......]
请您参考如下方法:
可以在运行时设置 artifactId(我将以下解决方案用于包含多个应用程序的单一存储库)。您的项目 pom.xml 应包括:
<project>
<artifactId>${artifactId}</artifactId>
...
<properties>
<artifactId>defaultArtifactId</artifactId>
</properties>
...
要在运行时设置 artifactId,请使用
mvn
带有
-DartifactId=foo
的命令选项。
示例:
mvn verify -DartifactId=foo