2012-08-13 4 views
2

코드를 생성하는 mojo를 작성하고 {root}/target/generated-sources/foo 아래에 고집했습니다. 내가 실행하면 :mojo 생성 코드를 소스 경로에 동적으로 추가하기

mvn clean install 

을 나는 생성 된 소스가 빌드 경로 (생성 된 파일이 있지만, 컴파일 단계에서 포착되지 않는)에 포함되지 않는 것을 나타내는 오류를 얻을. 나는 this answer에서 {root}/target/generated-sources/foo을 POM의 소스 디렉토리로 동적으로 추가해야한다고 알고 있습니다. 문제는, 어떻게해야하는지에 대한 정보를 추적 할 수 없었습니다.

백업 계획으로 Build Helper Maven Plugin을 사용할 계획이지만 가능한 경우 내 mojo에서 자동으로이 작업을 수행하고 싶습니다.

답변

2

은 내 모조에이를 추가하는 것을 선호 :

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

/** 
* Directory wherein generated source will be put; main, test, site, ... will be added implictly. 
* @parameter expression="${outputDir}" default-value="${project.build.directory}/src-generated" 
* @required 
*/ 
private File outputDir; 

는 분명히 자신의 패턴과 일치하는 default-value을 변경할 수 있습니다.

if (!settings.isInteractiveMode()) { 
    LOG.info("Adding " + outputDir.getAbsolutePath() + " to compile source root"); 
} 
project.addCompileSourceRoot(outputDir.getAbsolutePath()); 
+0

감사 :

그리고 다음 execute() 방법

. 나는 이미 첫 번째 비트 (즉, 출력 위치 속성)를 가지고있다. 컴파일 소스 루트를 추가하기 위해 노력하고있는 두 번째 비트입니다. 'project'는 나를 위해 정의되지 않았습니다. 그것을보고 있으면 그것이 maven 버전 일인지, 아니면 무엇이든 볼 수 있습니다. 하지만 아이디어가 있다면 알려주세요. –

+0

@KentBoogaart 자동으로 선택되어 사용될 준비가 된'MavenProperty' 속성을 추가했습니다. – maba

+0

환상적 - 도움 주셔서 감사합니다. –

관련 문제