2011-10-26 6 views
6

JUnit 4.8.1에서 Maven 3.0.3을 사용하고 있습니다. 내 JUnit 테스트에서, Maven pom.xml 파일에 정의 된 project.artifactId를 읽으려면 어떻게해야합니까? 내 치어, 나는JUnit 테스트에서 Maven 속성을 읽는 방법은 무엇입니까?

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.myco.pplus2</groupId> 
<artifactId>pplus2</artifactId> 

을하지만이

@Before 
public void setUp() { 
    ...   
    System.out.println("artifactId:" + System.getProperty("project.build.sourceEncoding")); 
} // setUp 

위의 출력 ... 이슈 ID를 게테 내 JUnit 테스트 내에서 작업 "널 artifactId를"하지 않습니다. 어쨌든, 어떤 도움을 주셔서 감사합니다 - Dave

+0

가능한 복제에서 설명하는 메이븐 호출자를

  • 사용을 필터링 메이븐 자원을 수행 [JUnit 테스트 내부 받는다는 속성을 검색하는 방법?] (http://stackoverflow.com/questions/247346/how-to-retrieve-maven-properties-inside-a-junit-test) – approxiblue

  • 답변

    5

    확실한 분은 systemPropertyVariables (및 친구들)을보십시오. 그것은 당신이 원하는 것을 해줍니다. AFAIK 그냥 나열하지 않고 모든 maven 속성을 전달하는 방법은 없습니다.

    9

    Maven 프로젝트 속성은 Java System 속성에 자동으로 추가되지 않습니다. 이를 위해 몇 가지 옵션이 있습니다. 이 특정 요구에 대해 maven-surefire-plugin (테스트를 실행하는 하나)에 대한 System 속성을 정의한 다음 System.getProperty 메서드를 사용할 수 있습니다.

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <version>2.10</version> 
        <configuration> 
         <systemProperties> 
          <property> 
           <name>projectArtifactId</name> 
           <value>${project.artifactId}</value> 
          </property> 
         </systemProperties> 
        </configuration> 
    </plugin> 
    

    Maven 속성을 JUnit 테스트로 가져 오는 다른 방법은 테스트 소스 파일에 대한 리소스 필터링 일 수 있습니다.

    추신. 런타임에도 Maven 설정을 읽는 것은 테스트 에서조차 상당히 더러운 일입니다. :)

    +1

    systemProperties 대신 systemPropertyVariables 사용 (더 이상 사용되지 않음) –

    0

    가끔 이클립스는 경우라면 자동으로 때로는 자원 필터링 아무튼,

    을 (마우스 오른쪽 클릭 -> 프로젝트 -> 속성 -> 빌더)를 구축> 프로젝트 - 대한 Java 빌더를 사용하도록 구성되어 일하지 마라. 몇 가지 옵션이 있습니다 :

    1. 위와 같이 pom.xml 파일에 속성을 제공하십시오.
    2. 는 등록 정보 파일을 제공하고

    2, 3의 http://scottizu.wordpress.com/2013/10/16/reading-the-project-version-from-the-maven-pom-file/

    관련 문제