【问题标题】:Set plugin's property on the command line in maven 2在 maven 2 的命令行上设置插件的属性
【发布时间】:2010-10-19 15:48:20
【问题描述】:

在 maven 2.x 中,如何在命令行而不是在 pom 或 settings.xml 中该插件的 中设置插件的属性?

例如,如果我使用的是mvn dependency:copy-dependencies(seen here),如何在不触及 pom 或我的 settings.xml 的情况下设置 useRepositoryLayout 属性?

谢谢!

【问题讨论】:

    标签: java maven-2 command-line


    【解决方案1】:

    在 copy-dependencies mojo 文档中,答案就在我面前(我什至链接到它)。该属性的文档包括您可以引用它的表达式。

    useRepositoryLayout:放置每个 同一目录布局中的工件 作为默认存储库。例子: /outputDirectory/junit/junit/3.8.1/junit-3.8.1.jar

    * Type: boolean
    * Since: 2.0-alpha-2
    * Required: No
    * Expression: ${mdep.useRepositoryLayout}
    * Default: false
    

    要从命令行设置此属性,您需要运行

    mvn -Dmdep.useRepositoryLayout=true <goals go here>
    

    【讨论】:

    • 澄清一下,你需要这样的东西:mvn -Dmdep.useRepositoryLayout=true dependency:copy-dependencies
    【解决方案2】:

    通常您使用与 java 系统属性相同的语法来设置 maven 属性。您是否尝试过以下行?

    mvn -DuseRepositoryLayout=true dependency:copy-dependencies
    

    【讨论】:

    • 这仅在插件作者使用表达式注释变量时才有效。它们将显示在插件文档中,如上面的答案所示。
    【解决方案3】:

    将属性定义为任意属性...而不是标准的 maven 道具,例如版本。在我的例子中,我定义了一个新的属性 build.version:

    <properties> build.version=unknown </properties>
    

    我使用该属性:

    <warName>${build.version}</warName>
    

    我定义属性:

    mvn -P prod -Dbuild.version=app_name-branch_name-build_number package
    

    【讨论】:

    【解决方案4】:

    我不清楚这里的其他答案。我是这样理解的:

    如果插件代码使用系统属性作为其参数,那么您可以在命令行中定义该值。

    您可以在插件代码中通过 3 种不同的方式完成此操作:

    @parameter expression="${aSystemProperty}" 
    @parameter default-value="${anExpression}"
    @parameter property="aSystemProperty"
    

    如果在插件代码中为特定属性使用了这些方法中的任何一种或组合,那么您可以在命令行上为插件参数指定一个值。以上代码取自maven docs here

    如果您使用带有上述代码的插件,您可以使用以下命令为您的属性指定一个值:

    mvn -DaSystemProperty=my-value <goal-here>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 2011-11-25
      • 1970-01-01
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      • 2019-01-17
      相关资源
      最近更新 更多