我正在尝试将一些遗留代码包含在maven插件中。遗留代码将其输出写入OS当前工作目录。我想把所有这些都移到目标目录中。即如果我的项目嵌套是
A
-B
-C
我在B或C中运行mvn install,我得到B或C中的输出,并希望将它们移动到B / target和C / target。更糟糕的是,如果我在A中启动mvn install,B和C的输出都会在A中结束,这显然非常糟糕(覆盖)。
我已经找到了获取当前项目文件夹的方法(不是从mvn install启动的地方),但到目前为止还没有找到任何内容,而不涉及将所有内容推回到用户(命令行黑客, pom hacks,属性文件等)。我还希望在启动遗产之前改变工作目录,但Java不允许这样做。那我该怎么办?
答案 0 :(得分:5)
为了再次回答我自己的问题(在我身上发生了很多),解决方案从这里开始:
/**
* The maven project.
*
* @parameter expression="${project}"
* @readonly
*/
private MavenProject project;
然后在设置方法中:
this.model = project.getModel();
this.build = model.getBuild();
this.finalName = build.getFinalName();
this.targetDir = new File(build.getDirectory());
让 targetDir 指向正确的位置。然后遗留代码运行,在任何可能的地方丢弃点,插件通过将它们移动到目标目录来清理。
这对初学者来说已经足够了。但是在targetDir可用的情况下,我实际上已经在厕所训练遗留代码,以便在正确的位置开展业务。
答案 1 :(得分:3)
快速说明:对于最新的maven插件,可以使用注释:
@Parameter(readonly = true, defaultValue = "${project}")
private MavenProject project;
答案 2 :(得分:0)
如果您只想获得构建工件的目录,那么执行此操作可能有点简洁:
/**
* @parameter expression="${project.build.directory}/${project.build.finalName}"
* @readonly
*/
private File outputPath;