我将这个额外的相对源目录添加到我的pom.xml中:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>../../my-framework/backend/src</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
我必须在这里添加一个相对源路径,因为这个项目和框架项目将由其他开发人员检出。工作空间中的相对路径将是相同的,但每个开发人员的工作空间本身的绝对位置将不同。
这适用于命令行。 (例如,#34; mvn compile&#34;工作正常。)但是,如果我从Eclipse打开同一个项目并选择&#34; Maven update&#34;从菜单中,然后它覆盖我的.classpath文件并输入一个类似于此的条目:
<classpathentry kind="src" output="target/classes" path="Users/MyUserName/workspace/my-framework/backend/src">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
这很糟糕,因为它在Windows上使用了与我的C:驱动器相关的路径。对于使用Linux的其他开发人员来说,这将完全没用。
我可以轻松地从.classpath中删除此生成的条目,但Eclipse Maven插件将始终覆盖它。结果是该文件总是被覆盖,并被提交到具有各种不同路径的git仓库。这是错误的。
如何永久地将我的.classpath文件中的路径相对化?
注意:如果我没有将.classpath文件添加到git repo,那么编译阶段就会失败,因为.classpath文件还包含构建路径,包括启动JRE容器。
UPDATE :我已经将框架代码转换为单独的模块和单独的maven工件,如khmarbaise所建议的那样。我可以将框架编译成jar,并将其安装到我的本地存储库中:
mvn package
mvn install
jar文件确实出现在我的〜/ .m2 / repository目录中。然后我从应用程序中删除了构建助手插件,并添加了一个依赖项:
<dependency>
<groupId>com.not_telling</groupId>
<artifactId>my-framework</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
但是如果我尝试使用&#34; mvn compile&#34;来编译应用程序。然后我得到一个&#34;包找不到com.not_telling.some_inner_thing&#34;错误信息。我还是错过了一块。