2012-12-12 25 views
0

我想在maven插件中包含一些遗留代码。遗留代码将其输出写入OS当前工作目录中。我想将所有这些移到目标目录中。即如果我的项目嵌套如何在majo mojo中获取项目目录?

A 
-B 
-C 

和我运行mvn在B或C安装,我得到了B或C的输出,并希望将它们移动到B /目标和C /目标。更糟糕的是,如果我在A中启动mvn install,则B和C的输出会以A显示,这显然非常糟糕(覆盖)。

我已经找了一种方式来获取当前的项目文件夹(不是从当地mvn安装启动),但迄今没有发现任何东西,不涉及全部推回到用户(命令行黑客,POM黑客,属性文件等)。我也希望能够在启动遗留系统之前改变工作目录,但Java不允许这样做。那么我该如何继续?

回答

3

要再次回答我的问题(发生在我身上了很多),该解决方案从这里开始:

/** 
* 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,我实际上已经对传统代码进行了厕所培训,以在正确的位置开展业务。

0

如果你只是想在那里神器建造它可能会有点整洁做到这一点的目录:

/** 
* @parameter expression="${project.build.directory}/${project.build.finalName}" 
* @readonly 
*/ 
private File outputPath; 
2

只是一个快速注:最新的Maven插件,注释可以用来代替:

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

此解决方案在Maven 3中似乎不起作用。有什么方法可以在Maven 3中执行此操作吗? – MattWeiler

+0

我使用最新的maven,它的工作原理...你确定它不是别的吗? – Panayotis