Файл jaxb.properties из пакета java, не включенного в Maven, построенный .war
Я помещаю файл jaxb.properties в пакет, где мои классы, где я использую другой поставщик JAXB (как видно из этой ссылки Задание EclipseLink MOXy как вашего JAXB Provider), который я использую для unmarshalling.
Выполняется следующее:
-
Когда я запускаю проект из Eclipse/STS, unmarshalling работает нормально,
так как он читает файл jaxb.properties.
-
Когда я создаю проект с Maven 3 (mvn clean install
), файл jaxb.properties не входит в пакет, поэтому эти классы не могут успешно отменить XML файлы. Затем я должен вручную поместить файл jaxb.properties, перейдя к развернутому приложению, введя пакет и вставив его в файл.
Решение? Спасибо!
Ответы
Ответ 1
В src/main/resources
вы должны поместить ресурсы (например, jaxb.properties).
Я пока не могу найти доказательств/документации, но я уверен, что maven будет компилировать и копировать файлы .java
из папки src
.
Из документации кажется ясным, что компиляция будет только компилировать и ничего не копировать. Поэтому будут обрабатываться только файлы java
под src/main/java и все остальное игнорируется.
Ресурсы обрабатываются ресурсами: ресурсами, которые выполняются автоматически. Эта цель копирует ресурсы из src/main/resources
.
Compile только компилирует файлы из папки src. Файлы ресурсов не являются java файлами и поэтому не будут скопированы/скомпилированы в выходной каталог.
Ответ 2
Как подсказывает намек, лучше всего использовать 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
), и это скопирует ресурс до его упаковки.
Ответ 3
добавить в свой pom.xml
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/jaxb.properties</include>
</includes>
</resource>
</resources>