2016-04-18 10 views
-1

私はJAR上でオプティマイザを実行しています。私はいつも理由を疑問に思ってきました。今日は、単一の.classファイルを置き換えてみたかった、と私はjarファイルを開いたとき、私は/cz/autoclient/ディレクトリにこれを見た:MavenはJAR内のすべての.classファイルを複製します

image description

不思議アーカイバはその混乱を扱うことができませんでした。私はsome advice on maven-compiler-plugin構成を見つけましたが、それは助けにはなりませんでした。私は実際にそれを解決する必要があり

<build> 
    <testSourceDirectory>${test.dir}</testSourceDirectory> 
    <sourceDirectory>${src.dir}</sourceDirectory> 
    <resources> 
     <resource> 
     <directory>${resource.dir}</directory> 
     </resource> 
    </resources> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.2</version> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
      <compilerArgument>-proc:none</compilerArgument> 
     </configuration> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.2-beta-4</version> 
     <configuration> 
      <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
      <archive> 
      <manifest> 
       <mainClass>cz.autoclient.Main</mainClass> 
      </manifest> 
      </archive> 
     </configuration> 
     <executions> 
      <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-jar-plugin</artifactId> 
     <version>2.5</version> 
     <configuration> 
      <archive> 
      <manifest> 
       <addClasspath>true</addClasspath> 
       <classpathPrefix>src/</classpathPrefix> 
       <mainClass>cz.autoclient.Main</mainClass> 
      </manifest> 
      </archive> 
      <outputDirectory>${project.build.directory}/</outputDirectory> 
     </configuration> 
     </plugin> 

    </plugins> 

    </build> 

:これはpom.xmlの私のビルド構成です。 JARオプティマイザの一部が、それはまた、Javaの公式ツールを破る:

jar uf AutoClient.jar version 
java.util.zip.ZipException: duplicate entry: cz/autoclient/autoclick/ColorPixel.class 
     at java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:233) 
     at java.util.jar.JarOutputStream.putNextEntry(JarOutputStream.java:109) 
     at sun.tools.jar.Main.update(Main.java:630) 
     at sun.tools.jar.Main.run(Main.java:269) 
     at sun.tools.jar.Main.main(Main.java:1233) 

何が重複したクラスファイルを引き起こし、この問題を解決する方法?コンパイルされたソースである/cz/autoclient/のファイルのみが複製されているようです。

+0

をあなたの完全なポンポン、またはMavenの実行の完全なログを投稿してください。 $ {src.dir}、$ {test.dir}、$ {resource.dir}の値は何ですか?重複している可能性があります。アセンブリプラグインで使用されるものに何か重複があるかもしれません。 – TomB

答えて

0

まず、あなたはそれを削除する必要があります。

<testSourceDirectory>${test.dir}</testSourceDirectory> 
<sourceDirectory>${src.dir}</sourceDirectory> 
<resources> 
    <resource> 
     <directory>${resource.dir}</directory> 
    </resource> 
</resources> 

あなたは、あなたがいないあなたが何をしているかを100%知っているが、あなたのポストに基づく場合を除き。だから、それを削除...

さらにmavenのアセンブリ・プラグインではなく、そのような古代のバージョンのよりuptodateバージョンを使用して...ここを参照してください:https://maven.apache.org/plugins/

+0

その正確なリンクからプラグインのバージョン番号をコピーすると、他の変更なしで問題が解決されました。 –

関連する問題