2017-10-13 11 views
2

私はsrc/main/resources/libフォルダからdllを配布しているmavenプロジェクトに問題があります。Mavenがソース/メイン/リソース内のバイナリファイルを破壊してしまいます。

プロジェクトは、maven-assembly-pluginを使用して依存関係のある単一のjarとしてビルドされています。

残念ながら、mavenプロセスは、コピープロセス中に自分のdllライブラリを破壊しているため、アプリケーションにとって役に立たなくなっています。

私はリソースフィルタリングのような概念を見てきました。

これは私の関連するpom.xmlです

誰にもアイデアはありますか?

私はこれのような何かをする必要があると思うが、今のところそれは私のために働いていない。 (下の回答に基づいて)

  <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <configuration> 

        <resources> 
         <resource> 
          <directory>${basedir}/src/main/resources/lib</directory> 
          <filtering>false</filtering> 
         </resource> 
        </resources> 

        <archive> 
         <manifest> 
          <mainClass>de.bochumuniruhr.psy.bio.behaviourcoder.Main</mainClass> 
         </manifest> 
        </archive> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
       </configuration> 
      </plugin> 

私の最終的な解決策:

偉大な答えをいただき、ありがとうございます。私は、maven-resources-pluginの設定を拡張する必要のない答えを出しました。他のリソースをフィルタリングする必要があるので、バイナリファイルをsrc/main/resources/unfiltered-resourcesフォルダに配置しました。

ここにはsource codeへのリンクがあります。

以下は、私が書いている時点での最終的な作業ポームです。

<build> 
     <finalName>BehaviourCoder_${git.build.time}_${git.commit.id.describe-short}</finalName> 
     <resources> 
      <resource> 
       <directory>${basedir}/src/main/resources</directory> 
       <filtering>true</filtering> 
      </resource> 
      <resource> 
       <directory>${basedir}/src/main/unfiltered-resources</directory> 
       <filtering>false</filtering> 
      </resource> 
     </resources> 
     <plugins> 
      <plugin> 
       <groupId>pl.project13.maven</groupId> 
       <artifactId>git-commit-id-plugin</artifactId> 
       <version>2.2.2</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>revision</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <generateGitPropertiesFile>true</generateGitPropertiesFile> 
        <injectAllReactorProjects>true</injectAllReactorProjects> 
        <dateFormat>yyyy-MM-dd_HHmmss</dateFormat> 
        <dateFormatTimeZone>UTC</dateFormatTimeZone> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.3.2</version> 
       <configuration> 
        <source>${java.version}</source> 
        <target>${java.version}</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <configuration> 
        <archive> 
         <manifest> 
          <mainClass>de.bochumuniruhr.psy.bio.behaviourcoder.Main</mainClass> 
         </manifest> 
        </archive> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

答えて

1

この部分:

   <resources> 
        <resource> 
         <directory>${basedir}/src/main/resources/lib</directory> 
         <filtering>false</filtering> 
        </resource> 
       </resources> 

は、このような<build/>セクションの下の下にある必要があります。その中に組み立てプラグインのキックはすでに手遅れ、リソースが既にあったようです

<project> 
     <build> 
      <resources> 
       <resource> 
        <directory>${basedir}/src/main/resources/lib</directory> 
        <filtering>false</filtering> 
       </resource> 
      </resources> 
      <plugins> 
       ... 
      </plugins> 
     </build> 
</project> 
2

mavenリソースプラグインによってコピーされます。以前の段階でフィルタリングを除外する必要があります(リソースがMavenリソースプラグインによってターゲットフォルダにコピーされている場合)。

参照Mavenのドキュメントこれを行う方法:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>3.0.2</version> 
      <configuration> 
       <nonFilteredFileExtensions> 
        <nonFilteredFileExtension>dll</nonFilteredFileExtension> 
       </nonFilteredFileExtensions> 
      </configuration> 
     </plugin> 
    </plugins> 
:あなたのケースのために https://maven.apache.org/plugins/maven-resources-plugin/examples/binaries-filtering.html

を、このようなものになることができます

関連する問題