我需要从控制台运行 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 组: Artifact :版本:do-automation -Dproperty.for.appConfig
如何通过系统属性设置 AppConfig 属性?有可能吗?
我尝试了以下方法,但它对我不起作用:
public class AppConfig {
/**
* @parameter expression="${path}"
*/
private String path
private String version
}
mvn 组: 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 主目录:c:\Program Files\Java\jdk1.6.0_21\jre 默认区域设置:en_US,平台编码:Cp1252 操作系统名称:“windows 7”版本:“6.1”架构:“x86”系列:“windows”
最佳答案
实际上 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”。
关于maven-2 - Maven插件通过系统属性初始化复杂参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8310191/