Ответ 1
попробуйте включить ${basedir} перед контуром каталога.
<resource>
<directory>${basedir}/src/main/java</directory>
</resource>
Я работаю над очень простым движком блога в Java, чтобы изучить несколько технологий.
Tech: Spring IoC, Hibernate, jUnit, GWT и Maven.
Я создал два проекта Maven: основной проект и проект GWT (который имеет ссылку на основной)
Код доступен по адресу https://github.com/LaurentT/BlogEngineCore
Моя цель заключается в следующем: я хочу включить источники Java и XML, так как моему проекту GWT понадобятся источники Java для его компиляции в JavaScript.
Я попытался использовать следующий код в элементе <build>
:
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*xml</include>
<include>**/*.*properties</include>
</includes>
</resource>
</resources>
Мои тесты jUnit, используемые для передачи и завершения до этого добавления, но теперь они даже не заканчиваются, они висят...
Я не знаю, что происходит, поэтому я хочу знать, есть ли другие способы включить источники Java или если я просто делаю это неправильно.
Любая подсказка?
попробуйте включить ${basedir} перед контуром каталога.
<resource>
<directory>${basedir}/src/main/java</directory>
</resource>
Более чистым способом было бы прикрепить отдельную баночку-источник.
Существуют стандартные способы генерации его в вашей сборке с использованием плагина источника maven:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
И ваш проект GWT теперь может ссылаться на ваши основные источники проекта в дополнение к вашему основному банку проекта:
<dependency>
<groupId>your.project</groupId>
<artifactId>core</artifactId>
<version>the.same.version</version>
<classifier>sources</classifier>
<scope>provided</scope><!-- use for compilation only -->
</dependency>
Вы можете найти, как настроить maven для многомодального проекта здесь.
Где файл * gwt.xml?
Если показанный тег является частью основного проекта pom.xml
, то вы также должны добавить <include>**/*.gwt.xml</include>
:
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
<include>**/*.gwt.xml</include>
</includes>
</resource>
В отличие от других ответов, мой подход копирует все дескрипторы модуля *.gwt.xml
и только исходные файлы java, которые фактически указаны в дескрипторах модуля. Вам также не нужно повторять себя в дескрипторах POM и модуля.
Обновите свой pom с помощью
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>2.7.0</version>
<executions>
<execution>
<goals>
<goal>resources</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
и ваш *.gwt.xml
<?xml version="1.0" encoding="UTF-8"?>
<module>
<!-- Specify the paths for translatable code -->
<source path='shared' />
</module>
org: codehaus.mojo: gwt-maven-plugin docs
GWT: ресурсы
Описание: Скопируйте исходный код GWT java и дескриптор модуля в качестве ресурсов в build outputDirectory. Альтернатива объявлению a<resource>
в POM с более тонкой фильтрацией, поскольку дескриптор модуля считывается для обнаружения источников, которые нужно скопировать.
Реализация: org.codehaus.mojo.gwt.GwtResourcesMojo
Язык: java
Связано с фазой: технологические ресурсы