我有一个项目依赖于我工作区中的不同项目模块。我试图将所有依赖项(包括模块)复制到lib
文件夹,以创建一个没有打包所有jar的可执行jar。
但是maven-dependency-plugin
一直在抱怨它无法将模块类复制到我项目的目标文件夹中。什么可能是错的?
my.groupt 我的模块 1.0
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
结果:
无法执行目标 org.apache.maven.plugins:Maven的依赖关系的插件:2.1:复制依赖性 项目my-project上的(copy-dependencies):复制错误 从C:\ workspace \ my-module \ target \ classes到的工件 C:\ workspace \ my-project \ target \ lib \ classes :(访问被拒绝)
答案 0 :(得分:2)
失败的原因是eclipse中的工作区解析。 Eclipse m2e将自身注入到maven的工件解析中。
因此,当您的my-project尝试获取所有依赖项时,工件解析器不返回jar文件(尚不存在),而是返回依赖项目的classes文件夹。
如果您尝试使用&#34生成项目;运行为 - &gt; maven install&#34;,它应该可以工作。
所以这是一个你无法在工作空间中轻松解决的场景。要么为我的项目转换工作空间,要么禁用eclipse中的依赖插件(生命周期绑定),要么使用不同的插件(如程序集)来复制你的depdencies(更干净,顺便说一下。)。但请注意,后者也仅在手动调用maven时才有效。
答案 1 :(得分:0)
您可能正在寻找Maven Shade插件。
它更加灵活,但要注意 - 通过Maven Shade构建的任何模块都很难自动跟踪依赖项。尽量不要将阴影结果作为构建过程的主要结果。