2011-11-24 115 views
10

我在包中放置了一個jaxb.properties文件,其中我的類使用了不同的JAXB提供程序(如鏈接Specifying EclipseLink MOXy as Your JAXB Provider所示),我使用它解組。java包中的jaxb.properties文件未包含在Maven中.war

出現以下情況:

  • 當我從Eclipse運行項目/ STS解組工程確定, 因爲它讀取jaxb.properties文件。

  • 當我使用Maven 3(mvn clean install)構建項目時,jaxb.properties文件未包含在軟件包中 - 因此這些類無法成功解組XML文件。然後,我必須手動放置jaxb.properties文件,方法是導航到已部署的應用程序,輸入軟件包並粘貼文件。

解決方案?謝謝!

回答

10

您應該將資源(如jaxb.properties)放入src/main/resources
我還找不到任何證明/文檔,但我確信maven只會編譯和複製src文件夾中的.java文件。

從文檔中看來很清楚,編譯只會編譯而不能複製任何內容。因此只有。將處理src/main/java下的文件java,並忽略其他所有內容。

資源由resources:resources處理,自動執行。該目標從src/main/resources複製資源。

Compile僅編譯src文件夾中的文件。資源文件不是java文件,因此不會被複制/編譯到輸出目錄。

+0

將測試其是否會以這種方式工作,並提供反饋.. –

+0

有用嗎?你是如何解決這個問題的? – HDave

+0

@HDave我相信他把屬性放到src/main/resources中 – oers

12

正如oers暗示的,您最好的選擇是使用maven-resources-plugin來實現這一點。

 <plugin> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.5</version> 
      <executions> 
       <execution> 
        <id>copy-resources</id> 
        <phase>validate</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${basedir}/target/classes/path/to/model/</outputDirectory> 
         <resources> 
          <resource> 
           <directory>${basedir}/src/main/resources/</directory> 
           <includes> 
            <include>jaxb.properties</include> 
           </includes> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

將您jaxb.properties文件directory並指定包的位置(outputDirectory),這將複製之前的包裝資源。

+0

這工作就像一個魅力。 – webDeveloper

+0

在我的情況下,'驗證'部分是錯誤的,因爲該文件夾在該階段我不知道。我將其更改爲'流程資源',現在它可以工作 – kiedysktos

0

添加到您的pom.xml

<resources> 
     <resource> 
      <directory>src/main/java</directory> 
      <includes> 
       <include>**/jaxb.properties</include> 
      </includes> 
     </resource>   
    </resources>