2013-02-07 2 views
6

커스텀 메이븐 플러그인을 개발 중입니다. 내가 쓸 때 내 POM 파일에등록 정보 파일에서 Maven Pom 변수에 액세스

${project.version} 

을 내가 등록 정보로 작성하는 경우 그러나 방법이 그 값을 얻을 수는 파일 :

올바르게 project.version 값을 설정합니다
project.version = ${project.version} 

, Java 코드에서 어떻게 구현할 수 있습니까?

PS :은 내 모조에 주석을 사용하지 않는 내가 속성 파일에서 같은 사용자가 내 변수로 정의해야하기 때문에 내 자바 코드에서 변수를 사용하지 않고 내 핵심 자바를 변경할 수 없습니다 변경된 사항을 처리하기위한 코드. 사용 주석

/** 
* The Maven project to act upon. 
* 
* @parameter expression="${project}" 
* @required 
*/ 
private MavenProject project; 

다음 project.getVersion는()

답변

0

원하는 것을 필터링 할 수 있습니다.

+0

속성 파일에서 모든 새 항목에 대해 새 변수를 정의해야한다는 의미입니다. pom 파일의 경우 maven이 해당 표현식을 대체하고 플러그인에서이 작업을 수행하고 속성 파일에서 읽고 표현식의 값을 얻고 싶습니다. 또는 다른 표현식을 사용하지 않고도 표현식의 값을 가져 오지 못하게해야합니다. 플러그인은 속성 파일에서 광산을 개발 중이므로)? – kamaci

+0

그건 메이븐 플러그인에서 MavenProject를 얻는 방법이었습니다. 리소스 플러그인과 같은 파일에 대해 필터링을 수행하려면 http://maven.apache.org/shared/maven-filtering/ –

+0

구성 요소를 살펴보아야합니다. 사용 방법에 대한 예가 있습니까? – kamaci

0

읽고 난이 기능에서 할로 pom.xml의 모든 속성을 저장할 수 있습니다 :

<dependency> 
    <groupId>org.apache.maven</groupId> 
    <artifactId>maven-model</artifactId> 
    <version>2.0</version> 
</dependency> 

<dependency> 
    <groupId>org.apache.maven</groupId> 
    <artifactId>maven-project</artifactId> 
    <version>2.0</version> 
</dependency 
:

/** 
* Save a property in a pom.xml 
* 
* @param propertyName Name of the property 
* @param value New value for the property 
*/ 
public static void saveProjectProperty(String propertyName, String value) 
{ 
    Model model = null; 
    FileReader reader = null; 
    MavenXpp3Reader mavenreader = new MavenXpp3Reader(); 
    try 
    { 
     reader = new FileReader("pom.xml"); 
     model = mavenreader.read(reader); 
     MavenProject project = new MavenProject(model); 
     while (project.getParent() != null) 
     { 
      project = project.getParent(); 
     } 
     project.getProperties().put(propertyName, value); 
     try (FileWriter fileWriter = new FileWriter("pom.xml")) 
     { 
      project.writeModel(fileWriter); 
     } 
    } 
    catch (IOException ex) 
    { 
     LOG.severe("Error saving pom.xml"); 
    } 
    catch (XmlPullParserException ex) 
    { 
     LOG.warning("Error reading pom.xml"); 
    } 
} 

것은 이러한 종속성을 추가해야 JVM에서 네이티브가 아닌 clases를 사용할 수 있도록

관련 문제