是否可以在另一个参数中使用已定义的参数?例如,我试过这个,并想出这是不允许的:
@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);
答案 0 :(得分:1)
正如您已经发现的那样:不,您不能像这样重复使用它。
代码表明一个学期有一个变量文件夹(你真的需要重用它吗?)。这有点奇怪:只需将inputDirectory
指向正确的文件夹,需要使用该参数。
不太明显的解决方案是在代码中执行:
File semesterFolder = new File( inputFolder, semester);
确保您很好地记录参数,例如如何使用semester参数获取此文件夹。