【发布时间】:2015-09-14 19:28:14
【问题描述】:
我最近将我的一个 Java 项目转换为一个 Maven 项目。我的 pom.xml 看起来像这样:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<groupId>com.myproject.groupid</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>MyProject</name>
<description>The first version of my maven project</description>
<dependencies>
<dependency>
<groupId>com.dependent.jar</groupId>
<artifactId>dependentjar</artifactId>
<version>0.0.1</version>
<scope>system</scope>
<type>jar</type>
<systemPath>${project.basedir}/jars/dependent.jar</systemPath>
</dependency>
<dependency>
<groupId>org.apache.ws.commons.schema</groupId>
<artifactId>XmlSchema</artifactId>
<version>1.4.3</version>
</dependency>
<dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.myproject.main.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</build>
</project>
当我执行 mvn compile 和 mvn install 时,项目工作正常,它也生成了 jar。但是当我尝试运行 jar [使用 java -jar MyProject.jar] 时,我收到一条错误消息:线程“main”java.lang.NoClassDefFoundError 中的异常,这是因为 maven 无法添加指定的依赖 jar在节中。 [在运行时不可用]
谁能告诉我将 systemPath jar 复制到 maven 生成的 jar 中的最佳方法?
我查看了 maven-shade-plugin 和 maven-assembly-plugin 并没有发现它们的运气。任何帮助将不胜感激!
【问题讨论】:
-
尽量避免systemPath依赖。开始使用存储库管理器将那种 jar 放在那里并将其用作默认依赖项。为什么要使用 src 而不是
src/main/java来更改约定?
标签: java maven maven-2 maven-3 maven-plugin