【问题标题】:Create mvn project including properties and dependencies创建包含属性和依赖项的 Maven 项目
【发布时间】:2013-07-12 12:55:51
【问题描述】:

如何创建一个包含一些属性和依赖项的 Maven 项目?

例如通过以下方式创建项目时:

mvn archetype:generate \
  -DarchetypeGroupId=org.apache.maven.archetypes \
  -DgroupId=com.mycompany.app \
  -DartifactId=my-app \
  -DinteractiveMode=false

如何添加

  <properties>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
  </properties>
  ...
    <dependency>
      <groupId>org.json</groupId>
      <artifactId>json</artifactId>
      <version>20090211</version>
    </dependency>

?

我知道我可以使用上面的命令来使用一些字符串操作命令。但是,我想知道是否有任何 Maven 方法可以直接创建带有属性和依赖项的 pom.xml 或稍后添加它们,例如类似:

mvn <add-properties> -Dmaven.compiler.source=1.7 -Dmaven.compiler.target=1.7
mvn <add-dependency> -DgroupId=org.json -DartifactId=json -Dversion=20090211

【问题讨论】:

  • 我想你已经知道如何直接在 pom.xml 文件中设置属性了。
  • 哇!您的意思是使用文本编辑器...?! :) 不,我需要一个命令,因为我需要它来编写脚本。
  • 那么您应该:制作自己的原型或使用脚本语言来操作原型生成的 XML。制作自己的插件也是一种解决方案:)

标签: maven project


【解决方案1】:

Don't thinkmaven 有这个功能 OOTB。

您还可以使用通用 XML 实用工具,例如XMLStarlet.

添加属性:

xmlstarlet ed -N x=http://maven.apache.org/POM/4.0.0 \
-s /x:project -t elem -n properties -v "" \
-s /x:project/properties -t elem -n maven.compiler.source -v 1.7 \
-s /x:project/properties -t elem -n maven.compiler.target -v 1.7 \
pom.xml

添加依赖:

xmlstarlet ed -N x=http://maven.apache.org/POM/4.0.0 \
-s /x:project/x:dependencies -t elem -n dependency -v "" \
-s "/x:project/x:dependencies/dependency[last()]" -t elem -n groupId -v org.json \
-s "/x:project/x:dependencies/dependency[last()]" -t elem -n artifactId -v json \
-s "/x:project/x:dependencies/dependency[last()]" -t elem -n version -v 2009211 \
pom.xml

如果您对我使用的 x 命名空间有任何疑问,请阅读此内容:http://xmlstar.sourceforge.net/doc/UG/ch05s01.html

根据具体情况,像@Tome 所说的那样创建自己的原型可能是更好的选择。

【讨论】:

    猜你喜欢
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 2020-05-18
    相关资源
    最近更新 更多