Maven MOJO - 在另一个参数中使用参数

时间:2015-05-17 12:49:51

标签: java maven mojo

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

@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);

1 个答案:

答案 0 :(得分:1)

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

File semesterFolder = new File( inputFolder, semester);

确保您很好地记录参数,例如如何使用semester参数获取此文件夹。