我有一个非常简单的弹簧启动项目,我使用名为jsoup的第三方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>
答案 0 :(得分:1)
您正在使用JSoup版本1.10.1,但将其与<scope>system</scope>
一起使用。 Maven不包括工件构建中的那些jar,就像<scope>provided</scope>
一样。另请参阅this Stackoverflow问题和答案。
然而,JSoup是一个普通的jar,就像你的其他依赖项一样,并且在Maven Central中。如您所见here。只需将其添加为常规依赖项。
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.1</version>
</dependency>
而不是你现在拥有的东西。这将使它包含在Spring Boot将为您创建的可执行jar中。 (并且可以避免手动查找该jar和更新等)。
答案 1 :(得分:1)
如果您的第3方jar没有Maven支持且不在任何Maven存储库中,您可以从中下载它,您需要为其制作Maven工件,然后使用Maven部署将其部署到Maven存储库中插件。
它可以是您的本地存储库,公司存储库或您要使用的任何公共存储库。
请看: Guide to deploying 3rd party JARs to remote repository
它是Maven命令格式:
mvn deploy:deploy-file -DgroupId=<group-id> \
-DartifactId=<artifact-id> \
-Dversion=<version> \
-Dpackaging=<type-of-packaging> \
-Dfile=<path-to-file> \
-DrepositoryId=<id-to-map-on-server-section-of-settings.xml> \
-Durl=<url-of-the-repository-to-deploy>