我正在研究一个非常简单的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源代码,或者我是否只是做错了。
有任何线索吗?
答案 0 :(得分:21)
更干净的maven方式是附加一个单独的源jar。
有一些标准方法可以在您的构建using the maven source plugin中生成它:
<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>
除了您的核心项目jar之外,您的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>
答案 1 :(得分:11)
尝试在目录路径前面加上$ {basedir}。
<resource>
<directory>${basedir}/src/main/java</directory>
</resource>
答案 2 :(得分:3)
您可以找到如何为多模块项目here设置maven。
* gwt.xml文件在哪里?
如果显示的标记是 core 项目的pom.xml
文件的一部分,那么您还应添加<include>**/*.gwt.xml</include>
:
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
<include>**/*.gwt.xml</include>
</includes>
</resource>
答案 3 :(得分:0)
与其他答案相比,我的方法复制了所有*.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源代码和模块描述符复制为构建outputDirectory中的资源。替代在POM中声明<resource>
并进行更精细的过滤,因为读取模块描述符以检测要复制的源。 实施:org.codehaus.mojo.gwt.GwtResourcesMojo
语言:java
绑定到阶段:进程资源