2013-10-08 52 views
0

我有一個maven項目,它讀取外部屬性文件以過濾資源。這在使用mvn包時工作正常,但從JUnit測試開始,這隻有在屬性在pom本身而不是屬性文件中聲明時才起作用,所以我認爲插件配置是問題。我得到了這個在我的朋友:使用M2E和外部屬性文件進行Maven資源過濾

<plugin> 
    <groupId>org.eclipse.m2e</groupId> 
    <artifactId>lifecycle-mapping</artifactId> 
    <version>1.0.0</version> 
    <configuration> 
     <lifecycleMappingMetadata> 
     <pluginExecutions> 
      <pluginExecution> 
      <pluginExecutionFilter> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>properties-maven-plugin</artifactId> 
       <versionRange>[1.0-alpha-2,)</versionRange> 
       <goals> 
       <goal>read-project-properties</goal> 
       </goals> 
      </pluginExecutionFilter> 
      <action> 
       <execute /> 
      </action> 
      </pluginExecution> 
     </pluginExecutions> 
     </lifecycleMappingMetadata> 
    </configuration> 
    </plugin> 
    <plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>properties-maven-plugin</artifactId> 
    <version>1.0-alpha-2</version> 
    <executions> 
     <execution> 
     <phase>initialize</phase> 
     <goals> 
      <goal>read-project-properties</goal> 
     </goals> 
     <configuration> 
      <files> 
      <file>${build.properties.file}</file> 
      </files> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

生命週期在Eclipse中被標記爲紅色。

編輯:

的M2E部分需要通過插件管理,比錯誤消失包圍。我可以看到目前在Maven偏好下執行的目標。

但是,如果我使用這個插件,在eclipse中執行單元測試時,它實際上仍然不會過濾資源。所以這仍然是開放的;)

回答

0

我不是很清楚,當你說它運行良好時,你運行mvn package,因爲軟件包將運行測試用例。 所以我的假設可能是包通過跳過測試正確運行。 爲了通過對性能的測試情況下,你可以使用保命插件,如下圖所示:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.4.2</version> 
    <configuration> 
     <systemProperties> 
     <property> 
      <name>filePath</name> 
      <value>/path/to/the/file</value> 
     </property> 
     </systemProperties> 
    </configuration> 
    </plugin> 

這將挑選性能和傳遞給測試用例。

+0

也許這是一個有點不清楚:測試運行正常,如果我使用Maven構建/測試,但不能從IDE –

0

嘗試在下面的塊中包含lifecycle-mapping插件。我已經使用其他未成功連接Eclipse的Maven插件完成此操作。

<profile> 
     <!-- Contents of this profile are only needed to make this project work in  
      Eclipse. Once all appropriate m2e connectors are available, this can be 
      removed --> 
     <id>m2e</id> 
     <activation> 
      <property> 
       <name>m2e.version</name> 
      </property> 
     </activation> 
     <build> 
      <pluginManagement> 
      <plugins> 
       <plugin> 
       <groupId>org.eclipse.m2e</groupId> 
       <artifactId>lifecycle-mapping</artifactId> 
       <!-- other plugin config here -> 
       </plugin> 
      </plugins> 
      </pluginManagement> 
     </build> 
     </profile> 

編輯:好的,你現在在Eclipse中綠色的身材,所以儘量用此代替在配置的<execute/>標籤:

<execute> 
    <runOnIncremental>true</runOnIncremental> 
    <runOnConfiguration>true</runOnConfiguration> 
</execute> 

然後做一個Maven - >更新再次投影。

Eclipse Wiki page on the topic

+0

感謝您的回答,但我真的不明白是什麼在那裏做)。我複製了 ...部分,現在即時獲取NPE,而maven在eclipse中更新項目。只需複製粘貼你的東西,沒有任何反應(我認爲是正確的;))你能否提供給我更多關於這方面的信息? –

+0

嗯好吧,我知道它只是一些錯誤......這實際上使它綠色,但在生命週期,但它仍然不工作;) –

相關問題