Tho*_*sen 13 java eclipse m2eclipse maven m2e
我有一种情况,我需要一个包含Java源的文件夹,用作树结构中"彼此相邻"的几个maven项目的源文件夹.由于maven项目的依赖性差异,我不能创建包含源的编译版本的工件,但是除了src/main/java之外,还需要让每个项目将其视为源文件夹.
显然,Maven可以通过添加位于"../foo/src"中的另一个源文件夹来轻松完成此操作,但是m2e拒绝这样做,为了使我们能够很好地工作,我需要让它在Eclipse中运行.
我怎么会有这样的结构:
/common/src
/a/pom.xml (add source folder ../common/src)
/a/src/main/java/...
/b/pom.xml (add source folder ../common/src)
/b/src/main/java/....
Run Code Online (Sandbox Code Playgroud)
并让它在Eclipse中工作?
(注意:我知道http://dev.eclipse.org/mhonarc/lists/m2e-users/msg01988.html - 但是,从2011年开始)
Ser*_*riu 10
你不应该这样做.
如果要在不同的模块中使用该代码,那么它也应该是Maven模块,用作其他模块的依赖项.
你要做的主要问题是,即使它不是两个模块之间的实际的源复制/粘贴,但最终它的行为就像一个.一旦你建造了两个罐子会发生什么?你将有重复的类,所以如果你在同一个应用程序中使用它们,类路径将有点错误.
那么,你究竟想要完成的是什么?
如果你真的,真的必须将它作为共享源目录而不是共享依赖项,那么你可以看看这个答案.
您应该能够使用相对路径和Maven Build Helper作为解决方案。
在每个项目中,或者在它们都继承自的“父”pom.xml 中,添加以下内容:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${basedir}/../../common/src</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)