我需要从控制台运行maven插件。在插件中,我需要一个复杂的参数:
/**
* @goal do-automation
**/
public class AutomationMojo extends AbstractMojo {
/**
* The current maven project.
*
* @parameter expression="${project}"
*/
protected MavenProject project;
/**
* App configuration.
*
* @parameter expression="${appConfig}"
*/
private AppConfig appConfig;
AppConfig参数看起来像这样:
public class AppConfig {
private String path
private String version
}
我将以下列方式运行maven插件:
mvn group:artifact:version:do-automation -Dproperty.for.appConfig
如何通过系统属性设置AppConfig属性?有可能吗?
我尝试了以下内容,但它对我没有用处:
public class AppConfig {
/**
* @parameter expression="${path}"
*/
private String path
private String version
}
mvn group:artifact:1.0-SNAPSHOT:do-automation -DappConfig.path = 122 -Dpath = 122 它创建了AppConfig,其属性为空值
我正在使用: Apache Maven 2.2.1(r801777; 2009-08-06 14:46:01-0430) Java版本:1.6.0_21 Java home:c:\ Program Files \ Java \ jdk1.6.0_21 \ jre 默认语言环境:en_US,平台编码:Cp1252 操作系统名称:" Windows 7"版本:" 6.1" arch:" x86"家庭:" windows"
答案 0 :(得分:2)
实际上,Maven 3提供了一些其他方法来做你想要的。请查看此链接,部分(Bean默认属性)
http://blog.sonatype.com/people/2011/03/configuring-plugin-goals-in-maven-3/
您可以在AppConfig中定义set(String configStr)方法,并从命令行传递解析字符串。对于实例。
mvn group:artifact:1.0-SNAPSHOT:do-automation -DappConfig=my/path,version
然后你就可以适当地解析set(...)方法中的“my / path,version”。
答案 1 :(得分:1)
您已阅读this了。这是一段摘录:
配置@parameter expression =" $ {aSystemProperty}" 默认值=" $ {anExpression}"
指定用于计算要注入的值的表达式 在构建时将Mojo放入此参数中。由...给出的表达式 default-value通常用于指代中的特定元素 POM,例如$ {project.resources},它引用了列表 资源意味着伴随生成的JAR文件中的类。的 当然,默认值不必是表达式,但也可以是a 简单常数如真或1.5。对于String类型的参数 可以将表达式与文字值混合,例如 $ {project.artifactId} - $ {} project.version - 特别。系统属性 由表达式给出,允许用户覆盖默认值 命令行通过-DaSystemProperty = value。注意:如果都没有 指定了default-value和expression,参数只能是 从POM配置。使用' $ {'和'}'是必需的,以 划分可以评估的实际表达式。
答案 2 :(得分:0)
您应该更改您的配置,如下所示:
/**
* App configuration.
*
* @parameter
*/
private AppConfig appConfig;
public class AppConfig {
/**
* @parameter expression="${appConfig.path}"
*/
private String path
/**
* @parameter expression="${appConfig.version}*/
private String version
}
这应该有机会使用您的系统配置参数。首先,我将检查通过插件的通常配置标签的配置是否按预期工作,以查看是否有不同的错误。