2016-12-16 14 views
0

私は非常にシンプルな春のブートプロジェクトを持っています。私はjsoupというサードパーティのjarファイルを使用しています。サードパーティのJarファイルをMavenパッケージに追加

Eclipseからプロジェクトを実行すると、コードは正常に動作しています。しかし、私がmvn clean packageコマンドを使用して実行可能なjarファイルにエクスポートすると、プロジェクトはまだ動作しますが、jsoupを使用する部分はjsoupが見つからないという例外がスローされます。だから私の実行可能なjarにはjsoupが含まれていません。

いくつかの方法を検索して試しましたが、機能しませんでした。あなたが私を助けることができれば、私はそれを感謝します。

は、ここであなたがJSoupバージョン1.10.1を使用しますが<scope>system</scope>でそれを使用している

<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> 
+1

良いaproachは、あなたがそれを構築する際のmavenで成果物をダウンロードします以下の設定を追加することです。それから、Mavenのコマンド形式で Guide to deploying 3rd party JARs to remote repository

。システムパスに言及する特別な理由はありますか? org.jsoup jsoup 1.10.1 Nagaraddi

+1

サードパーティクラスがあなたの生成されたJARにコンパイルされていないため、問題があります。あなたがしたいことは、一般的に「ファットJAR」として知られているものを作成することです。これには、すべてのクラス+すべての第三者クラスが含まれます。いろいろな仕組みがあります。 https://www.mkyong.com/maven/create-a-fat-jar-file-maven-shade-plugin/ –

+0

@AlanあなたはSpring Bootをチェックしたいかもしれません...それはまさにSpring Bootがすることです。 –

答えて

1

サードパーティのjarファイルにMavenのサポートがなく、Mavenリポジトリにない場合、ダウンロードできる場所からMavenアーティファクトを作成し、それをMavenのある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> 
1

、私のPOMファイルです。 Mavenには、<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ブートがあなたのために作成する実行可能なjarファイルにインクルードされます。 (そしてその瓶や更新プログラムを手動で探すことからあなたを救う)。

関連する問題