我在maven中创建了一个多模块项目,如下所示:
root/pom.xml
|________client/pom.xml
|________/src/main/java
|________/src/main/resources
|________common/pom.xml
|________/src/main/java
|________tools/pom.xml
|________/src/main/java
|________server/pom.xml
|________/src/main/java
|________/src/main/resources
我想编译“client”模块代码,它依赖于“common”模块中的所有java类,但依赖于“tools”模块中的一些java类。使用下面的buildhelpermaven插件,我可以将所有java源文件添加到common/path下,但是我需要一种方法将单个java文件定义为tools/下的源文件。
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>../common/src/main/java</source>
<!-- Adding single java files as below does not work -->
<source>../tools/log/Log.java</source>
<source>../tools/socket/SocketClient.java</source>
<!----------------------------------------------------->
</sources>
</configuration>
</execution>
</executions>
3条答案
按热度按时间mec1mxoz1#
好的,根据收到的评论,理想的解决方案似乎是将模块分解成子模块,并将其用作依赖项。但是,由于这是一项耗时的任务,我将发布一个快速而肮脏的解决方案,介绍如何将一个或多个java文件复制到新的源目录src/main/external下,然后将此目录作为源代码的一部分添加到构建中。
编译后的输出如下:
uxh89sit2#
你应该在“客户端”中包含模块“common”和“tools”作为依赖项,然后你可以在project:mvn clean install的根目录下运行build-它将构建所有模块。
qkf9rpyu3#
不要试图使用模块的某些部分作为依赖项。maven不支持这一点,它会导致结构脆弱且难以维护。
如果你只需要一部分
tools
,那么这是一个明确的信号tools
太大了,你需要把它分成两个模块。