Maven-在项目之间共享库

Maven-在项目之间共享库,maven,jakarta-ee,maven-2,maven-3,ear,Maven,Jakarta Ee,Maven 2,Maven 3,Ear,我正在做一个多项目,现在我有一个类似的结构(实际上有几个jar项目和几个war项目) 我想要实现的是,让projA和projB从公共共享文件夹中读取它们的依赖项,而不是保留它们自己的副本 实际上,我并不真正关心编译时从何处读取它们,但是当我打包EAR文件时,我希望每个jar/war只显示一次,从而减少EAR的大小 我已经尝试在父pom上声明依赖项,将依赖项声明为和其他一些东西,但到目前为止我还没有实现这一点 有没有一个简单的方法来实现这一点?有简单的maven插件吗 提前感谢。您应该能够通过将J

我正在做一个多项目,现在我有一个类似的结构(实际上有几个jar项目和几个war项目)

我想要实现的是,让
projA
projB
从公共共享文件夹中读取它们的依赖项,而不是保留它们自己的副本

实际上,我并不真正关心编译时从何处读取它们,但是当我打包EAR文件时,我希望每个
jar
/
war
只显示一次,从而减少EAR的大小

我已经尝试在父pom上声明依赖项,将依赖项声明为和其他一些东西,但到目前为止我还没有实现这一点

有没有一个简单的方法来实现这一点?有简单的maven插件吗


提前感谢。

您应该能够通过将JAR作为依赖项添加到EAR的pom.xml中来实现这一点:

<dependencies>
    <dependency>
        <groupId>com.mycompany</groupId>
        <artifactId>myapp-web</artifactId>
        <version>1.0-SNAPSHOT</version>
        <type>war</type>
    </dependency>
    <dependency>
        <groupId>com.mycompany</groupId>
        <artifactId>myapp-utils</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>jar</type>
    </dependency>
</dependencies>

当您迁移到Maven时,不应该将依赖项JAR存储在代码库中。我建议您创建一个包含所有依赖项的中央Maven存储库

请参阅首先将这些工件安装到本地存储库中。此外,您还可以参考以在构建时获取工件

您需要做的是:从源代码中删除所有依赖项jar,以及它们在
pom.xml
中的所有依赖项。这些文件将在需要时从maven中央存储库下载和打包。相应地设置工件的类型

<dependencies>
    <dependency>
        <groupId>com.mycompany</groupId>
        <artifactId>myapp-web</artifactId>
        <version>1.0-SNAPSHOT</version>
        <type>war</type>
    </dependency>
    <dependency>
        <groupId>com.mycompany</groupId>
        <artifactId>myapp-utils</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>jar</type>
    </dependency>
</dependencies>
    <dependency>
        <groupId>com.mycompany</groupId>
        <artifactId>myapp-utils</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <scope>provided</scope>
    </dependency>
META-INF/MANIFEST.MF
lib/myapp-utils-0.0.1-SNAPSHOT.jar
META-INF/application.xml
myapp-web.war