【发布时间】:2017-07-31 11:41:35
【问题描述】:
我是 Java 世界的新手。我使用了依赖项 Math.jar 和 Special.jar,并编写了一个 Main 方法。这些 Math.jar 和 Special.jar 是从终端创建的,因此它们没有版本号。在构建项目时,它显示错误,即找不到依赖项的版本号。那么我的 pom.xml 应该包含什么。此外,如果有任何分步教程可以在 jar 中创建 jar 并使其可执行,那将会有很大帮助。此外,如果有任何不同的工具可用,请解释。先感谢您。这是它显示错误的部分,因为 jar 没有版本号,1.0 是我选择的随机数。我也在使用 Intellij idea / Eclipse / 终端。所以任何可以通过IDE或终端实现的解决方案都可以
'
<dependencies>
<dependency>
<groupId>Math</groupId>
<artifactId>Math</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>Special</groupId>
<artifactId>Special</artifactId>
<version>1.0</version>
</dependency>
</dependencies>`
我需要的目录结构是
A.jar(包含以下文件)
Math.jar
Special.jar
MainMethod.class
META-INF
用户将只运行 A.jar,所有依赖项都将包含在 A.jar 中。
我剩下的 pom.xml 是
<build>
<finalName>Workspace</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<!-- Run shade goal on package phase -->
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<!-- add Main-Class to manifest file -->
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>MainMethod</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<archive>
<manifest>
<mainClass>MainMethod</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
【问题讨论】:
-
我认为将您的问题分成两个单独的问题可能是有意义的:一个是关于如何依赖文件,一个是关于您在使用 maven-shade-plugin 时遇到的任何问题。