我有一个 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


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!