绝对maven pomderived条目添加到classpath

时间:2017-12-18 14:38:20

标签: java eclipse maven

我将这个额外的相对源目录添加到我的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;错误信息。我还是错过了一块。

0 个答案:

没有答案
相关问题