【问题标题】:Maven MOJO - use a parameter in another parameterMaven MOJO - 在另一个参数中使用一个参数
【发布时间】:2015-05-17 12:49:50
【问题描述】:

是否可以在另一个参数中使用定义的参数?例如我试过这个,发现这是不允许的:

@Parameter(required = true)
private String semester;

@Parameter(defaultValue = "${basedir}/src/main/resources/" + semester)
private String inputFolder;

我的第二次尝试是将使用参数作为表达式:

@Parameter(defaultValue = "${basedir}/src/main/resources/${semester}")
private String inputFolder;

这也是失败的。下一次迭代:我在插件执行时将参数写为属性:

@Parameter(defaultValue = "${project}", readonly = true, required = true)
private MavenProject project;

@Override
public void execute() throws MojoExecutionException, MojoFailureException
{
    Properties props = project.getProperties();
    props.put("semester", semester);
}

这也不起作用,因为参数是在execute() 执行之前注入的。我得到的唯一解决方案是自己替换表达式:

inputFolder = inputFolder.replace("${semester}", semester);
outputFolder = outputFolder.replace("${semester}", semester);

【问题讨论】:

    标签: java maven mojo


    【解决方案1】:

    您已经发现:不,您不能像这样重复使用它。 代码建议有一个学期的变量文件夹(你真的需要重用它吗?)。这有点奇怪:只需将inputDirectory 指向正确的文件夹,使该参数成为必需。 不太明显的解决方案是在代码中完成:

    File semesterFolder = new File( inputFolder, semester);
    

    确保您将参数记录得很好,例如学期参数如何用于获取此文件夹。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-19
      • 2012-10-26
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      • 1970-01-01
      相关资源
      最近更新 更多