Maven 有没有办法只获取一个特定依赖项的运行时依赖项?
我有一个多模块maven项目。一些模块是其他模块的依赖项,而一个单独的项目[commons repo]中的模块是我的主项目中的依赖项 我能够创建一个中间模块来收集我能够传递的运行时JAR,但是当我尝试将相同的代码合并到不同的模块中时,它会提取所有的运行时JAR,而不仅仅是特定的依赖项。代码如下 GroupID B是我们跨多个项目使用的外部“公共”项目Maven 有没有办法只获取一个特定依赖项的运行时依赖项?,maven,Maven,我有一个多模块maven项目。一些模块是其他模块的依赖项,而一个单独的项目[commons repo]中的模块是我的主项目中的依赖项 我能够创建一个中间模块来收集我能够传递的运行时JAR,但是当我尝试将相同的代码合并到不同的模块中时,它会提取所有的运行时JAR,而不仅仅是特定的依赖项。代码如下 GroupID B是我们跨多个项目使用的外部“公共”项目 <dependency> <groupId>B</groupId> <artifac
<dependency>
<groupId>B</groupId>
<artifactId>B.artifact2</artifactId>
<version>${B.version}</version>
</dependency>
B
B.人工制品2
${B.version}
我能够创建一个单独的[intermediate]模块,其中只有B.artifact2作为唯一的依赖项,并使用以下代码将运行时JAR拉入它们自己的${project.build.directory}/target文件夹
<artifactId>maven-dependency-plugin</artifactId>
<version>${maven-dependency-plugin.version}</version>
<executions>
<execution>
<id>1</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<includeScope>runtime</includeScope>
<excludeGroupIds>com.google.code.findbugs,net.jcip</excludeGroupIds>
<outputDirectory>${project.build.directory}/dependency-jars</outputDirectory>
</configuration>
</execution>
maven依赖插件
${maven dependency plugin.version}
1.
准备包装
复制依赖项
运行时
com.google.code.findbugs,net.jcip
${project.build.directory}/dependency jars
这非常有效[为我提供了所需的~15罐],但我们不想使用中间模块。我试图将其合并到主模块中[中间层将是其依赖项],但我无法仅选择该特定依赖项来获取运行时JAR,而是将几乎所有运行时依赖项拉入文件夹。该项目如下所示:
<dependency>
<groupId>A</groupId>
<artifactId>A.artifact</artifactId>
<version>${A.version}</version>
<classifier>dist</classifier>
<type>jar</type>
</dependency>
<dependency>
<groupId>B</groupId>
<artifactId>B.artifact1</artifactId>
<version>${B.version}</version>
</dependency>
<dependency>
<groupId>B</groupId>
<artifactId>B.artifact2</artifactId>
<version>${B.version}</version>
</dependency>
A.
人工制品
${A.version}
距离
罐子
B
B.人工制品1
${B.version}
B
B.人工制品2
${B.version}
我在这个模块中有多个依赖项,使用下面的方法仍然可以提取所有运行时依赖项[~40 jar]
<execution>
<id>test</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<includeScope>runtime</includeScope>
<excludeGroupIds>A,C,D,com.google.code.findbugs,net.jcip</excludeGroupIds>
<outputDirectory>${project.build.directory}/dependency-jars</outputDirectory>
</configuration>
</execution>
测试
包裹
复制依赖项
运行时
A、 C,D,com.google.code.findbugs,net.jcip
${project.build.directory}/dependency jars
如果我尝试将其限制为B.artifact2,我只从B.artifact2获得工件,而不是它的运行时JAR/依赖项
我是否被迫使用中间模块,然后将其用作主模块的依赖项?在我看来,您一开始使用
复制依赖项就走错了方向
在Maven中,您不会通过复制依赖项来处理依赖项,而是在POM的dependencies部分中定义它们,并从Maven存储库中提取它们
在公司中,您通常在服务器上运行Nexus/Artifactory并使用它
如果您的项目很小,并且您只是一名开发人员,那么您也可以使用Maven本地存储库。在任何情况下,都不要试图将依赖项从一个项目复制到另一个项目。在我看来,首先使用复制依赖项是错误的
在Maven中,您不会通过复制依赖项来处理依赖项,而是在POM的dependencies部分中定义它们,并从Maven存储库中提取它们
在公司中,您通常在服务器上运行Nexus/Artifactory并使用它
如果您的项目很小,并且您只是一名开发人员,那么您也可以使用Maven本地存储库。在任何情况下,都不要试图将依赖项从一个项目复制到另一个项目。您“复制(maven)依赖项”(在“打包”过程中使用“复制依赖项”)……是相当少见的/“一种气味”!1.你为什么这么做。。。请阅读“maven依赖项(范围运行时)”,特别是“maven导入pom”!;)。。。深入到“maven assembly”…但标题问题是:“有没有办法只获取一个特定依赖项的运行时依赖项?”-对于maven来说听起来“非常可行”。你“复制(maven)依赖项”(在“打包”过程中使用“复制依赖项”)…是相当少见的/“一种气味”!1.你为什么这么做。。。请阅读“maven依赖项(范围运行时)”,特别是“maven导入pom”!;)。。。深入到“maven assembly”…但标题问题是:“有没有一种方法可以只获取一个特定依赖项的运行时依赖项?”-听起来maven“非常可行”。