2016-10-25 22 views
-1

eclipseでは、依存関係(つまりJARファイル)をプロジェクトに簡単に追加できます。 プロジェクトを右クリックし、[ビルドパス] - > [ライブラリを追加]をクリックします。Mavenはプロジェクトに依存関係を追加します

ここでは、隠しファイルがプロジェクト内で ".classpath"に作成されます。

import foo.bar.*; 

この「アプリケーションは、」今、単一のjarファイルにエクスポートすることができます。このファイル内 は今、私はjavaファイルでそれを追加することによって、ライブラリを使用することができます追加classpathEntryです。

私はこれをMavenとeclipseなしでどうやって実現できますか? 私は... emacsのために:)

コマンドで切り替え:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-cli -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false 

私は自分自身のサンプルの開始アプリケーション取得します。 srcフォルダ内には、コマンドラインに「hello World」と書かれたApp.javaファイルがあります。私は自分自身に正常に私のプロジェクト(Mavenのindedependent展開)内のjarファイルを取得するのpom.xmlに以下と

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>2.10</version> 
    <executions> 
     <execution> 
     <id>copy</id> 
     <phase>package</phase> 
     <goals> 
      <goal>copy</goal> 
     </goals> 
     <configuration> 
      <artifactItems> 
      <artifactItem> 
        <groupId>com.mycompany.third-party</groupId> 
     <artifactId>commons-cli-archetype</artifactId> 
     <version>1.0-SNAPSHOT</version> 
     <type>jar</type> 
     <overWrite>false</overWrite> 
     <!--${project.basedir}  ${project.build.directory} --> 
     <outputDirectory>${project.basedir}/resources/repo</outputDirectory> 
     <destFileName>optional-new-name.jar</destFileName> 
      </artifactItem> 
      </artifactItems> 
      <outputDirectory>${project.basedir}/resources/repo</outputDirectory> 
      <overWriteReleases>false</overWriteReleases> 
      <overWriteSnapshots>true</overWriteSnapshots> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

今どのように私は私のApp.java内でこのjarファイルを使用できますか? .classpathファイルを手動で作成する必要がありますか? 私はどのように私のクラスパタンを自動的に整理できますか? 私はclasspassentriesでmanifest.MFを作成しようとしていますが、成功はありません。私はいくつかのチュートリアルを試しました。手動MANIFEST.MFを作成した後

 <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <includes> 
    <include>${project.basedir} 
    /resources/repo/optional-   new-name.jar</include> 
     </includes> 
    </configuration> 
    </plugin> 

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-jar-plugin</artifactId> 
<configuration> 
    <archive> 
     <manifest> 
       <addDefaultImplementationEntries>true 
    </addDefaultImplementationEntries> 
      <addClasspath>true</addClasspath> 
      <mainClass>your.main.Class</mainClass> 



     </manifest> 
     <manifestEntries> 
      <Class-Path>${project.basedir}/resources/repo</Class-Path> 

     </manifestEntries> 

    <manifestFile> 
    <!-- 
     ${project.build.outputDirectory}/META-INF/MANIFEST.MF 

    --> 
    ${project.basedir}/META-INF/MANIFEST.MF 
     </manifestFile> 

    </archive> 

<!-- 
    <archive> 
    <manifest> 
     <mainClass>com.mkyong.core.App</mainClass> 
    </manifest> 
    </archive> 
    --> 


</configuration> 

は、私が何の大成功がなかったです。コマンド

mvn clean install 

MANIFEST.MF後

は空のまま。

助けていただければ幸いです。

ありがとうございます!

日食を使用していないため
+1

達成したいことがわからないのですか?どのような瓶を作りたいですか?なぜ、プロジェクトの中に「ジャー」を持っていたいのですか? –

+0

はい。 app.javaファイルの中に私のjarをインポートしたいと思います。そして、クラスを使用してください。あなたがeclipsを使ってライブラリをプロジェクトに追加するのと同じように。 –

+0

Mavenでは、jarをローカルリポジトリにインストールするか、それらをNexus/Artifactoryにデプロイします。次に、それらをpomファイルのとして参照します。このようにしたくない理由はありますか? –

答えて

1

+1; ^)

あなたが別のJARからのコードを参照するために探しているなら、あなたのPOMに次の追加してみてください:

XXX、YYYとZZZはあり
<dependencies> 
    <dependency> 
     <groupId>xxx</groupId> 
     <artifactId>yyy</artifactId> 
     <version>zzz</version> 
    </dependency> 
</dependencies> 

インポートするJARの座標を指定します。あなたはジョダ時間をインポートするために探していた場合は、すべての内容を結合するために探しているなら、それは

<dependency> 
     <groupId>joda-time</groupId> 
     <artifactId>joda-time</artifactId> 
     <version>2.6</version> 
    </dependency> 

だろう例えばので

:あなたは、あなたのネクサスから

編集をこれらを取得することができますあなたのコードとの依存関係を単一のJARとしてリリースすれば、maven-shade-pluginを調べることができます。 How to package a jar and all dependencies within a new jar with maven

を参照してください。また、.classpathファイルを使用しないでください。これはEclipse特有のものです。それを変更するとMavenに影響せず、おそらくEclipseを混乱させるでしょう

+0

ありがとうございました。私は数日間strugling mavenされています。 –

+0

.classpathの代わりに何を使うことができますか? –

+0

私は試しています:http://www.mkyong.com/maven/maven-create-a-fat-jar-file-one-jar-example/。私はemacsのコード補完はありません。この例では、App.javaファイルでインポートを使用する方法を知ってうれしかったです。しかし、Eclipseの.classpath。それを使用せずに輸入品を使用するにはどうすればよいですか?私もエラーがありました: "org.dstovall:onejar-maven-plugin:1.4.4またはその依存関係の1つを解決できませんでした:"。誰でも?これを行う簡単な非日食の方法はありますか? –

0

これを入手しました!

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-shade-plugin</artifactId> 
     <version>2.3</version> 
     <executions> 
      <execution> 
       <phase>package</phase> 
       <goals> 
        <goal>shade</goal> 
       </goals> 
      </execution> 
     </executions> 
    </plugin> 

ポンポンへ: 私は追加のステップ5の代わりにステップ5を行う http://www.mkyong.com/maven/maven-create-a-fat-jar-file-one-jar-example/

までこのチュートリアルを行いました。 出来上がり:

mvn package 

java -jar target/dateutils.jar 

今では動作します。

あなたがStormcloudを助けてくれてありがとう! どうしたの?まだ私の.jarに見つかったリソースはありません。 瓶は陰影になっていた。 https://maven.apache.org/plugins/maven-shade-plugin/ mavenを使用せずにjarファイルをサーバにエクスポートしたい場合はどうすればいいですか?どのようにして完全な作業用ジャーをエクスポートするのですか?

もう一度おねがいします!

+0

瓶の中の資源!私はたくさんの試みがあった。私は間違ったフォルダを見た。 :D –

+0

以前に追加したリンクのshadeプラグインの動作中のXMLの説明を見つけることができます – Stormcloud

関連する問題