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

标签 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 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/

相关文章:

java - Maven 多模块项目打破编译时类解析

java - 大标准输出的 Gradle 堆空间问题

scala - 如何通过 SBT 发布 Ivy 依赖项?

java - Eclipse + Maven + maven-license-plugin

maven-2 - 构建时的代码格式化

maven-2 - 使用 Nexus REST API 获取给定 groupid/artifactId 的最新 Artifact 版本

maven-2 - Maven 报告您的项目所依赖的许可证

java - 使用 Maven 构建 Soap web 项目

maven-2 - Maven 构建执行 svn get

java - 将 JAR 文件作为依赖项添加到没有其相关 JAR 的项目中