short:すべての.java
ファイルとすべてのMETA-INF
フォルダを一連のjarファイルからフィルタリングし、そのjarファイルからクラスファイルとリソースを1つのjarファイルにパッケージ化する必要があります。 私は現在maven-assembly-plugin
を使用していますが、簡単にmavenビルドプロセスに組み込むことができる限り、何かを試すことになります。mavenアセンブリプラグインでexclude termを正しく使用する
long:私はツールのさまざまな開発段階を管理するためにmavenを使用しています。 基本的なステージは、フリーウェアである第二いくつかのより多くの機能を持っている、第三段階では細かいが、これまで、私はクラスパスに異なるソースディレクトリを追加するためにプロファイルを使用し、ソースがきちんとproject.jar
にコンパイルされている作品の全ての機能)
です。
- まず問題:プロファイルは
project.jar
で終わる経由.java
ソースがプロジェクトに含まれています。
そして私はまた、依存関係が含まれており、ウィンドウの実行可能ファイルを生成するために最終使用launch4j(現在のターゲットプラットフォーム)にfinal.jar
を構築するmaven-assembly-plugin
を使用します。
- 第二の問題:依存関係のjarファイルから様々な
META-INF
部品がfinal.jar
に混ぜると、私はそれらすべてをスキップするとよいでしょう。
私は<exclude>
タグを使用してassembly.xml
の例で検索しましたが、dependencySet
と<exclude>*.java</exclude>
の私の組み合わせを使用しているいずれかを見つけることができませんでした。 私はそれを行うことができるという私にも肯定的ではありません。これまで
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>jar-with-dependencies</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<unpack>true</unpack>
<scope>runtime</scope>
<useDefaultExcludes>true</useDefaultExcludes>
<!--<useTransitiveFiltering>true</useTransitiveFiltering>-->
<!--<useStrictFiltering>true</useStrictFiltering>-->
<excludes>
<exclude>META-INF</exclude>
<exclude>**/*.java</exclude>
<exclude>*.java</exclude>
<exclude>*:sources</exclude>
</excludes>
</dependencySet>
</dependencySets>
</assembly>
私の研究:
は、ここに私のassembly.xmlある
私はexample assembly.xml exclude java
とGoogleで検索しましたが、私の問題をカバーした例を見つけることができませんでした。 (私は過去のことをたくさん検索しましたが、見つけたものはすべて保存していませんでした) http://maven.apache.org/plugins/maven-assembly-plugin/advanced-descriptor-topics.htmlを読みましたが、その知識を私の問題に適用できませんでした。
ええと...よく、私はそれについて考えましたが、既に反対していました。実際には、プロファイルを使用して正しいソースブランチをロードするだけでは、単一のモジュールにすべての単一の要素を構築するよりもはるかに多くの作業が必要になります。あなたのご意見をありがとうございますが、これは私の状況では実行可能な方法ではありません。私は、exeファイルを作成するためのシェルスクリプトを作成して、手作業の前にあまりにも多くのものを除外するように変更すると思います。 Vielen Dank trotzdem、Grüßenach Berlin –
私の意見では、アプローチは複雑すぎ、邪魔になっています。それを再考する必要があります。 –
これはうまく設計されていません。しかし、私はまだ良いアプローチを見つけていない。異なるモジュールを使用すると、避けたい日常的なオーバーヘッドが大きくなりすぎます。私は5,6モジュールを持つことになります(最下位ステージのいくつかの部分は上位のものの一部ではないなど)。それはまったく混乱しないでしょう。現在の設定では、プロファイルを選択し、私が作業しているコードの部分を一度に正確に表示します。ここに私をもたらした問題はより小さくなっています。 (btw。元のコメントを少し編集しました) –