2016-11-22 10 views
0

今は私の質問のために検索しましたが、まだ回答が見つかりませんでした。Java:eclipseでjavaプロジェクト(JARではない)をエクスポート中に外部のjarファイルを含める

私は、SWT jarのようないくつかの外部JARを持つjava eclipseプロジェクトを持っています。今、このプロジェクトは私がしばらく取り組んできた宿題プロジェクトです。私は割り当てを入れなければなりません。教授はコードを見直し、ローカルでも実行します。

どのようにプロジェクトをエクスポートするには、すべての依存関係をそのままにしておくのですか?私はもちろん、JARファイルを提出することはできません。私はプロジェクトを「ファイルシステム」としてエクスポートしようとしました。ただし、外部依存関係は保持されません。

これを行う方法はありますか?

ありがとうございました。

答えて

1

Mavenなどの管理依存ツールを使用しない場合は、プロジェクトをコンパイルするために必要なすべてのjarを指定する必要があります。
この場合、教師にANTがある場合、Antビルドは依存関係を整理するきれいな方法です。
それ以外の場合は、プロジェクトのフォルダにすべての外部依存関係を手動で追加する方法があります。例:libs。 このlibsフォルダに、すべての外部ジャーを追加します。 プロジェクトをzip/tarします。教授はプロジェクトJDKを設定する必要があります。それは大丈夫です。

+0

私はプロジェクトをMavenプロジェクトに変換しようとしました。ビルドパスから外部依存関係を削除し、pom.xmlに定義されている依存関係が1つだけになります。私はそれをファイルシステムとしてエクスポートしてからインポートしました。しかし、私が再インポートした後、SWT jarを見つけることができませんでした。その奇妙なと私はなぜ理解していない。それで、私は他の選択肢を模索していました。 –

+0

をMavenと一緒に使用すると、プロジェクトにSWT jarファイルを直接追加することはなく、プロジェクトをエクスポートする必要はありません。それだけで十分ですのでそのまま使用してください。リブ解決はコンパイル時に行われます。問題は、SWTがmaven中央リポジトリから取得可能かどうかわかりません。やってみました ? – davidxxx

+0

ありがとうございます。私は日食にいくつかの問題があったと思う。ファイルシステムを使用してエクスポートすると、依存関係が保持されます。 –

1

POMで指定された必要な依存関係をMavenでダウンロードする方法があります。これは必要な依存関係がいくつかのMavenリポジトリ(中央)にある場合、またはローカルリポジトリにインストールされている場合にのみ機能します。

maven-dependency-pluginを構成するプラグイン要素をPOMに追加するだけです。これにより、コンパイル段階ですべての依存関係が特定のフォルダにコピーされます。この場合:target/lib。

<project> 
    ... 
    <build> 
     ... 
     <plugins> 
      ... 
      <!-- For copying dependencies into target folder --> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>copy-dependencies</id> 
         <phase>compile</phase> 
         <goals> 
          <goal>copy-dependencies</goal> 
         </goals> 
         <configuration> 
          <outputDirectory>${project.build.directory}/lib</outputDirectory> 
          <overWriteReleases>false</overWriteReleases> 
          <overWriteSnapshots>false</overWriteSnapshots> 
          <overWriteIfNewer>true</overWriteIfNewer> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
     ... 
    </build> 
    ... 
</project> 

あなたが実行可能なJARを作っていた場合、あなたはまた、マニフェストでのClass-Path要素に/ libが対象と指定されたメインクラスを使用するためにコピーされた依存関係を追加するのmaven-jarファイル・プラグインを設定できます。

<!-- For including dependencies in target folder in JAR manfiest Class-Path --> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <configuration> 
     <archive> 
      <manifest> 
       <addClasspath>true</addClasspath> 
       <classpathPrefix>lib/</classpathPrefix> 
       <mainClass>Main</mainClass> 
      </manifest> 
     </archive> 
    </configuration> 
</plugin> 

Mavenを使用した場合のJARをダウンロードしてプロジェクトにlibフォルダに入れて、ことはできません。あなたが見たい場所を教えてくれれば、IDEはそれらを選ぶことができます。または、フラグを持つjavacjavaコマンドを使用して、依存関係の場所を指定してください。

+0

ありがとうございます。私は日食にいくつかの問題があったと思う。ファイルシステムを使用してエクスポートすると、依存関係が保持されます。 –

+0

それを聞いてうれしいです。 –

関連する問題