我想将我的maven tycho eclipse-plugin项目的依赖项打包到jar文件中,就像描述here一样,但是有一个像eclipse-plugin项目那样的清单优先项目。我不想在pom.xml中列出所有eclipse-plugin依赖项,有没有办法让assembly-plugin或shade-plugin与MANIFEST.MF文件一起工作?
我想在其他项目中使用eclipse-plugin,因此应该将插件打包到一个带有依赖项的jar中(eclipse插件依赖项)。
行家组装-插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
只收集pom文件中的依赖项,而不是来自manifest - &gt; jar-with-dependencies等于普通jar,但jar-with-dependencies中的manifest文件是一个新的简单文件,而不是项目中的原始清单。
mvn assembly:程序集失败:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:assembly (default-cli)
on project parent:
Error reading assemblies: No assembly descriptors found.
Tycho deps: mvn assembly:程序集以mvn install开头:
...为每个模块
答案 0 :(得分:1)
我认为maven-dependency-plugin就是你要找的东西。 我以下面的方式使用它,它将所有清单依赖类包含在我的ouptut jar中。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>unpack-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<configuration>
<includes>**/*.class</includes>
<excludes>**/*.properties</excludes>
<outputDirectory>target/classes</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
</configuration>
</execution>
</executions>
</plugin>
答案 1 :(得分:0)
不幸的是,似乎不可能使用maven-shade-plugin和maven-assembly-plugin来打包由Tycho计算的依赖项。
我通过maven-shade-plugin
和maven-dependency-plugin
进行了调试,maven-dependency-plugin
成功从Tycho中获取了依赖关系。
原因:似乎Tycho将基于Manifest的依赖项注入SYSTEM范围依赖项(toString()
的{{1}})。
project.getArtifacts()
但是,每个Maven mojo必须通过插件描述符属性...p2.eclipse-plugin:org.eclipse.jdt.debug:jar:jdimodel.jar:3.7.101.v20120913-153601:system, p2.eclipse-plugin:org.eclipse.jface:jar:3.8.0.v20120912-135020:system...
定义其所需的依赖项解析。 requiresDependencyResolution
定义maven-shade-plugin
。此范围不包括requiresDependencyResolution = ResolutionScope.RUNTIME
依赖项。
我暂时将插件描述符修改为system
,而test
就像魅力一样。但是,我不知道有任何方法可以覆盖maven mojo的插件描述符的属性。
由于maven-shade-plugin
定义了更小的范围maven-assembly-plugin
,所以tycho依赖项也不适用于此插件。
另见:Discussion