2011-11-24 111 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>