来自java包的jaxb.properties文件未包含在Maven内置的.war中

Mar*_*Spa 11 java jaxb maven

我在包中放了一个jaxb.properties文件,我的类在那里使用不同的JAXB提供程序(如此链接中所示,将EclipseLink MOXy指定为您的JAXB提供程序),我将其用于解组.

发生以下情况:

  • 当我从Eclipse/STS运行项目时,解组工作正常,因为它读取了jaxb.properties文件.

  • 当我使用Maven 3(mvn clean install)构建项目时,包中不包含jaxb.properties文件 - 因此这些类无法成功解组XML文件.然后我必须通过导航到已部署的应用程序,输入包并粘贴文件来手动放置jaxb.properties文件.

解决方案?谢谢!

oer*_*ers 13

你应该把资源(比如jaxb.properties)放进去src/main/resources.
我还找不到任何证明/文档,但我确信maven只会编译和复制.java文件src夹中的文件.

从文档中可以看出,编译只会编译而不会复制任何内容.因此只有.javasrc/main/java下的文件将被处理,其他一切都被忽略.

资源由资源处理:资源,自动执行.此目标从中复制资源src/main/resources.

编译仅编译src文件夹中的文件.资源文件不是java文件,因此不会被复制/编译到输出目录.


Mat*_*ows 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> 
Run Code Online (Sandbox Code Playgroud)

jaxb.properties文件放入directory并指定包位置(outputDirectory),这将在打包之前复制资源.