2016-09-01 6 views
5

私はIntellij Java 2016.2.2とMavenを使って非常に単純なJavaコンソールアプリケーションを作成しています。Intellij Java 2016&Maven:JARに依存関係を埋め込む方法は?

私は外部のライブラリを追加したいので、私はこのようにMavenの私の依存関係を追加します。私はIDEでそれを実行すると

<dependency> 
    <groupId>jline</groupId> 
    <artifactId>jline</artifactId> 
    <version>2.12</version> 
</dependency> 

それが正常に動作しますが、外部のコンソールで(私が持っていません次のエラー:java.lang.NoClassDefFoundError)。

私はチェックして、いくつかの理由で、外部JARは、私はちょうど生成されたJARに追加されません。私はまた、 "ファイル - >プロジェクト構造"で多くのことを試みましたが、まだ動作していません...

私はJARを自分の依存関係で構築したいだけです。

java -jar myproject.jar 

どうすればいいですか?ご協力いただきありがとうございます!

+2

....ジャーとの依存関係の記述子を使用してあなたの助けのための – khmarbaise

+0

感謝のmaven-組立・プラグインを使用しますが、まだ動作していません。ですから、私は "Build - > Build artifacts ..."を使ってJARをビルドします。それは正しい方法ですか? – thenaoh

答えて

12

を実行して、私はようやくのIntelliJのJavaでこのJARを生成するために管理し、ここで私が行う方法です。

  • pom.xmlファイルに依存関係を追加する
  • ファイル→プロジェクト構造→成果物→新規→JAR→依存モジュールを使用した依存関係CIES
  • は、この内のフォルダ「リソース」を作成、フォルダを(その中にMANIFEST.MFを持つ)
  • 移動「META-INF」のメインクラスを選択し、SRC /メインに、あなたのプロジェクトでOK
  • をクリックしてください「リソース」フォルダ
  • は、ビルドのために行く - >

EDIT

より良い(と簡単な方法)JARを構築するために成果物を構築することがポンポンに次の行を追加して行うこと。 xmlファイル:

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <configuration> 
       <archive> 
        <manifest> 
         <mainClass>your.MainClass</mainClass> 
        </manifest> 
       </archive> 
       <descriptorRefs> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
      </configuration> 
      <executions> 
       <execution> 
        <id>make-assembly</id> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

次に、「clean」および「package」mavenコマンドを使用します。

上記の最後の3つのステップ(MANIFEST.MFについて)は依然として必須であるようです。

4

わかりましたので、あなたは基本的にすべての独自の依存関係が含まれている「脂肪瓶」(とも呼ばれるアセンブリ)を、作成したい(通常は、依存関係は外部にあります)。

Mavenプラグインを使用する必要があります。以下のサンプルアセンブリのプラグインの設定jar-with-dependencies次のとおりです。

<project> 
    ... 
    <build> 
    ... 
    <plugins> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.6</version> 
     <configuration> 
      <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
     </configuration> 
     ... 
</project> 

、その後、単に

mvn package 
+0

ありがとう、それは面白そうですね!しかし今、別の単純な問題:「主要なマニフェスト属性はありません。それは私のMANIFEST.MFファイルを見つけることができないようです...どんな考えですか? – thenaoh

+1

http://stackoverflow.com/questions/574594/how-can-i-create-an-executable-jar-with-dependencies-using-maven – YMomb

+0

ありがとうございます!私はそれを見てみましょう! – thenaoh

関連する問題