【问题标题】:inter-project dependencies and filesharing between projects项目间依赖关系和项目之间的文件共享
【发布时间】:2012-03-24 20:02:24
【问题描述】:

我有 4 个项目:A、B、C 和 Common。

A,B,C 在 Common 中同时使用一些 java 文件和一些 XSD/XML 文件。 A,B,C 不应该互相了解,而只知道 Common。 例如,在测试时,我需要在每个项目中找到公共文件(Java 和非 Java)。 我如何链接它们,以便我可以在例如找到文件。 A 什么时候写代码访问文件?

这是来自 A 和 Common 的 POM:

 Common:
 <groupId>dk.myCompany.sa</groupId>
 <artifactId>common</artifactId>
 <version>0.0.3-SNAPSHOT</version>
 <packaging>jar</packaging>
 <name>common</name>
 <url>http://maven.apache.org</url>

 A
 <groupId>dk.myCompany.sa</groupId>
 <artifactId>A</artifactId>
 <version>0.0.2-SNAPSHOT</version>
 <packaging>jar</packaging>
 <dependencies>
  <dependency>
   <groupId>dk.myCompany.sa</groupId>
   <artifactId>common</artifactId>
   <version>0.0.3-SNAPSHOT</version>
  </dependency>
 </dependencies>

【问题讨论】:

    标签: java eclipse maven dependencies pom.xml


    【解决方案1】:

    如果您将 Common 添加为依赖项,则 Common 的 src/main/resources 文件夹中的任何文件都将位于 A、B 和 C 的类路径中。因此,只要您使用getResourceAsStream(请参阅How to really read text file from classpath in Java)加载文件,它们就可以访问。

    【讨论】:

    • 您所涉及的问题是关于预先设置类路径以获取文件。我不想每次将其部署到某个地方时都必须将类路径设置为某些东西。我希望有一个相对路径,比如当我在项目中找到文件时,例如:“./src/test/java/dk/myCompany/dataretrival/test/testdata/initalConfig.xml”
    • 您不必设置类路径,Maven 会为您完成。只要确保你使用getResourceAsStream
    • 好的,在两个虚拟项目中尝试过这个,我可以看到你不必设置类路径。现在我只需要弄清楚为什么在我的真实项目中类路径设置不正确。谢谢!
    【解决方案2】:

    将A、B、C定义为Common的pom的模块:

    -- common.pom
    <groupId>dk.myCompany.sa</groupId>
    <artifactId>common</artifactId>
    <version>0.0.3-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>common</name>
    <modules>
        <module>A</module>
        <module>B</module>
        <module>C</module>
    </modules>
    

    您可能还需要为 A、B 和 C 定义清单文件,这些文件引用其类路径中的当前公共 jar。

    【讨论】:

    • 你能告诉我一个如何在不同项目的清单文件中设置它的例子吗?
    • 另外,正如我所见,添加的模块只会让其他人知道,而不是相反,这正是我所希望的。
    猜你喜欢
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    相关资源
    最近更新 更多