我正在尝试将一些旧代码包含在Maven插件中。旧代码将其输出写入OS当前工作目录中。我想将所有内容移至目标目录。即如果我的项目嵌套是
A
-B
-C
Run Code Online (Sandbox Code Playgroud)
并且我在B或C中运行mvn install,我在B或C中获得了输出,并希望将它们移至B / target和C / target。更糟的是,如果我在A中启动mvn install,则B和C的输出都将在A中结束,这显然非常糟糕(覆盖)。
我一直在寻找一种获取当前项目文件夹的方法(不是从其启动mvn安装的位置),但是到目前为止,没有发现任何东西都没有涉及将所有这些都推给用户(命令行黑客,pom黑客,属性文件等)。我还希望有一种在启动旧版之前更改工作目录的方法,但是Java不允许这样做。那么我该如何进行呢?
只是一个简短的说明:对于最新的 maven 插件,可以使用注释代替:
@Parameter(readonly = true, defaultValue = "${project}")
private MavenProject project;
Run Code Online (Sandbox Code Playgroud)
要再次回答我自己的问题(很常见),解决方案从这里开始:
/**
* The maven project.
*
* @parameter expression="${project}"
* @readonly
*/
private MavenProject project;
Run Code Online (Sandbox Code Playgroud)
然后在设置方法中:
this.model = project.getModel();
this.build = model.getBuild();
this.finalName = build.getFinalName();
this.targetDir = new File(build.getDirectory());
Run Code Online (Sandbox Code Playgroud)
这将使targetDir指向正确的位置。然后,旧版代码运行,在任何需要的地方放点,插件将它们移动到目标目录中进行清理。
对于初学者来说已经足够了。但是有了targetDir,我实际上结束了厕所培训旧代码,以便在正确的地方开展业务。
| 归档时间: |
|
| 查看次数: |
4400 次 |
| 最近记录: |