【发布时间】:2017-05-02 06:28:20
【问题描述】:
我有一个非常简单的 spring boot 项目,我使用了一个名为 jsoup 的 3rd 方 jar。
当我从 Eclipse 运行项目时,代码运行良好。但是当我使用 mvn clean package 命令并将其导出到可执行 jar 时;项目仍然有效,但我使用 jsoup 的部分会引发无法找到 jsoup 的异常。所以我的可执行 jar 不包含 jsoup。
我搜索并尝试了一些方法,但它们不起作用。如果你能帮助我,我将不胜感激。
这是我的 pom 文件,
<modelVersion>4.0.0</modelVersion>
<groupId>com.tools</groupId>
<artifactId>parser</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>parser</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.7</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>jsoup</groupId>
<artifactId>jsoup</artifactId>
<scope>system</scope>
<version>1.0</version>
<systemPath>${basedir}\src\lib\jsoup-1.10.1.jar</systemPath>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
【问题讨论】:
-
更好的方法是添加以下配置,当你构建它时,它将通过 maven 下载工件。是否有任何具体原因提及系统路径?
org.jsoup jsoup 1.10.1 -
问题是因为 3rd 方类未编译到您生成的 JAR 中。您要做的是创建通常称为“Fat JAR”的内容,其中包含您的所有课程 + 所有第 3 方课程。有多种机制:请参阅此处了解初学者。 mkyong.com/maven/create-a-fat-jar-file-maven-shade-plugin
-
@AlanHay 你可能想检查一下 Spring Boot ......这正是 Spring Boot 的作用。
-
您正在使用
<scope>system</scope>并且它不包含在工件中(maven 会像提供的依赖项一样忽略它)。您应该使用来自 maven Central 的 jsoup 版本(就像所有其他依赖项一样)。 -
我没有注意到 jsoup 有 maven 支持。我刚刚下载了jar并添加为依赖项。胖罐子也可以解决我的问题。谢谢。
标签: java eclipse maven spring-boot jar