2012-12-12 34 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