2012-12-12 3 views
0

일부 레거시 코드를 Maven 플러그인으로 묶으려고합니다. 레거시 코드는 OS의 현재 작업 디렉토리에 출력을 기록합니다. 나는 모든 것을 목표 영역으로 옮기고 싶다. 나는. 내 프로젝트의 중첩이maven mojo에서 프로젝트 디렉토리를 얻는 방법?

A 
-B 
-C 

내가이 MVN B 또는 C에 설치 실행하면, 나는 B 또는 C의 출력을 얻을 및/대상 및 C/대상을 B로 이동하려고합니다. 더 나쁜 것은, 만약 내가 mvn을 A에 설치하면, B와 C 모두에 대한 출력이 A로 끝나게되는데, 이것은 분명히 매우 좋지 않습니다 (덮어 쓰기).

현재 프로젝트 폴더를 얻는 방법을 모색했지만 (mvn 설치가 시작된 곳이 아닌) 사용자가이 모든 것을 사용자에게 다시 돌려주는 것을 포함하지는 않았습니다. (명령 줄 해킹 , 해킹, 속성 파일 등). 또한 레거시를 시작하기 전에 작업 디렉토리를 변경하는 방법을 원했지만 Java는이를 허용하지 않습니다. 어떻게해야합니까?

답변

3

다시 한번 내 자신의 질문에 대답하기가 (나를 많이 일어나는) 솔루션은 여기서 시작 :

/** 
* The maven project. 
* 
* @parameter expression="${project}" 
* @readonly 
*/ 
private MavenProject project; 

를 그런 다음 설치 방법 : TARGETDIR 포인팅을 얻는다

this.model = project.getModel(); 
this.build = model.getBuild(); 
this.finalName = build.getFinalName(); 
this.targetDir = new File(build.getDirectory()); 

올바른 곳에서. 그런 다음 레거시 코드가 실행되고 점이있는 곳이면 점을 찍고 플러그인은 대상 디렉토리로 이동하여 정리합니다.

초보자들에게는 충분히 좋습니다. 그러나 targetDir을 사용할 수있게되어서, 실제로 올바른 장소에서 비즈니스를 수행하기 위해 레거시 코드를 화장실 교육에 사용했습니다. 당신은 단지 이슈가이 작업을 수행 할 수있는 비트 깔끔한 수 있습니다 내장되어있는 디렉토리를 얻고 싶다면

0

:

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

그냥 빨리 참고 : 최신 받는다는 플러그인에 대한 주석 대신 사용될 수있다 :

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

이 솔루션은 Maven 3에서 작동하지 않는 것 같습니다. Maven 3에서이 작업을 수행 할 수있는 방법이 있습니까? – MattWeiler

+0

최신 Maven을 사용하고 있으며 작동합니다 ... 다른 것이 아니라고 확신합니까? – Panayotis

관련 문제