我很难使用maven将java源文件和附加的依赖项添加到输出jar文件中。
我想要存档的是将编译后的类,源文件和所有依赖项(没有源代码)放在一个可以分发的jar中。
- com/name/project/*.class
- com/name/project/*.java
- lib/*.jar
- META-INF/MANIFEST.MF
这是我目前所拥有的pom.xml:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.name.project/main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
我希望有人能帮助我。
欢呼声 担
答案 0 :(得分:2)
我决定不将dependecy-jar添加到我的输出jar中。相反,我使用以下pom.xml将我的源包含在jar中,同时包含已编译的依赖项。 我不得不排除* / .java文件,因为一些奇怪的依赖项也包含了源代码。
<build>
<sourceDirectory>src/</sourceDirectory>
<resources>
<resource>
<directory>${project.build.sourceDirectory}</directory>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>unpack-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/classes</outputDirectory>
<excludes>**\/*.java</excludes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
感谢您的帮助。
欢呼声 担
答案 1 :(得分:1)
JAR通常不应该包含其他JAR,但当然没有什么可以阻止你这样做。
您可以使用resource
部分整齐地包含源代码,如下所示:
<build>
</resources>
<resource>
<directory>src/main/java</directory>
</resource>
</resources>
...
我猜想你可以将copy-dependencies
任务绑定到resources
阶段,看看是否会在最终工件中包含依赖JAR。
答案 2 :(得分:0)
也许你应该看到this link。只需检查您是否正确配置了maven + IDE合作