Maven 2 Maven插件通过系统属性初始化复杂参数

Maven 2 Maven插件通过系统属性初始化复杂参数,maven-2,maven,maven-plugin,Maven 2,Maven,Maven Plugin,我需要从控制台运行maven插件。在插件中,我需要一个复杂的参数类型: /** * @goal do-automation **/ public class AutomationMojo extends AbstractMojo { /** * The current maven project. * * @parameter expression="${project}" */ protected MavenProject project; /** * App configura

我需要从控制台运行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组:工件:版本:do automation-Dproperty.for.appConfig

如何通过系统属性设置AppConfig属性?有可能吗

我尝试了以下方法,但对我无效:

public class AppConfig {
/**
* @parameter expression="${path}"
*/
private String path

private String version

}
mvn组:工件:1.0-SNAPSHOT:do automation-DappConfig.path=122-Dpath=122 它创建了属性值为空的AppConfig

我正在使用: ApacheMaven 2.2.1(r801777;2009-08-06 14:46:01-0430) Java版本:1.6.0_21 Java主页:c:\Program Files\Java\jdk1.6.0\U 21\jre 默认区域设置:en_US,平台编码:Cp1252 操作系统名称:“windows 7”版本:“6.1”拱门:“x86”系列:“windows”

您已经阅读过。以下是摘录:

configuration@parameter expression=“${aSystemProperty}” 默认值=“${anExpression}”

指定用于计算要注入的值的表达式 在构建时输入Mojo的这个参数。表达式由 默认值通常用于引用中的特定元素 POM,例如${project.resources},它引用 用于在结果JAR文件中伴随类的资源。属于 当然,默认值不必是表达式,也可以是表达式 简单常数,如true或1.5。以及字符串类型的参数 可以将表达式与文字值混合使用,例如。 ${project.artifactId}-${project.version}-special。系统属性 通过表达式给定,用户可以覆盖 命令行via-DaSystemProperty=value。注:如果两者都没有 未指定默认值或表达式,参数只能为 从POM配置。需要使用“${”和“}”来 划界可计算的实际表达式


您应该按照以下方式更改配置:

/**
 * App configuration.
 *
 * @parameter
 */
private AppConfig appConfig;


public class AppConfig {
/**
* @parameter expression="${appConfig.path}"
*/
private String path

/**
* @parameter expression="${appConfig.version}*/
private String version

}

这将提供使用系统配置参数的机会。首先,我会通过插件的常规配置标签检查配置是否按预期工作,以查看是否有其他错误。

事实上,Maven 3提供了一些其他方法来实现您想要的功能。请看一下这个链接,部分(Bean默认属性)

您可以在AppConfig中定义set(stringconfigstr)方法,并解析从命令行传递的字符串。比如说

mvn group:artifact:1.0-SNAPSHOT:do-automation -DappConfig=my/path,version

然后,您将能够适当地解析set(…)方法中的“my/path,version”。

您是否通过pom中的常规配置而不是命令行中的参数进行了检查?