2012-04-25 7 views
1

EDITMavenのコピーのsrc /メイン/リソース/サービスのフォルダにMETA-INF /に

[OK]を

私は今、より具体的にすることができます

私は私のSCR /メイン/リソースフォルダを持っているメタ - INF サービスを含む /javax.annotation.processing.Processor

私のpomは(コメント付きで)まだ同じです。 "mvn clean install"を実行すると、出力jarにはMETA-INFフォルダのみが含まれます。

サービス名の名前を変更した場合、出力jarには自分のクラスと、名前が変更された新しいフォルダとその内容のMETA-INFフォルダが含まれます。


通常のmaven2ユーザーにとっては簡単な質問です。 シンプルなサブプロジェクト

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>aida</groupId> 
    <version>0.0.1-SNAPSHOT</version> 
    <artifactId>aida-annotationProcessors</artifactId> 
    <packaging>jar</packaging> 
    <name>AIDA Annotation Processors</name> 


    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
       </configuration>  
      </plugin> 
     </plugins> 
<!--  <resources> --> 
<!--   <resource> --> 
<!--    <directory>src/main/resources/services</directory> --> 
<!--    <targetPath>META-INF/services</targetPath> --> 
<!--   </resource> --> 
<!--  </resources> --> 
    </build> 

    <dependencies> 
    </dependencies> 

</project> 

のために私の目標は単純です、私はこの単純なポンポンを持っている: は、私はちょうど{ルート}で私のsrc /メイン/リソース/サービス/ javax.annotation.processing.Processorファイルをコピーしたいです/ META-INF/servicesフォルダにコピーします。

私はリソース部分のコメントを外すと、私のjarにはクラスなしのMETA-INFフォルダしか含まれません!

お手伝いできますか?

答えて

6

これは、Mavenのコンパイラプラグインのバグ/機能..です

http://jira.codehaus.org/browse/MCOMPILER-97

この問題を回避するには、プロセッサ、-procを含むプロジェクトのための注釈処理を無効にすることです。

0

これはどのように行うのですか?instructions from Apacheですが、正しく行っているようです。そのページを見て、少し間違いがないことを確認してください。なし:

+0

を生成したあなたは私の更新を見ることができます:) – user1180339

4

より柔軟な解決策は、services/javax.annotation.processing.Processorファイルを生成するために注釈プロセッサを使用することです。この方法では、クラスはそのまま残り、追加の注釈プロセッサに依存するプロジェクトは不要です。

META-INF/services generatorはメインレポである:

<dependency> 
    <groupId>org.kohsuke.metainf-services</groupId> 
    <artifactId>metainf-services</artifactId> 
    <version>1.1</version> 
    <scope>provided</scope> 
</dependency> 

@MetaInfServicesと、プロセッサに注釈を付ける - 私は手動でProcessor.classと注釈を供給しなければならなかったことに注意してください、それ以外の場合はMETA-INF/services/javax.annotation.processing.AbstractProcessor

import org.kohsuke.MetaInfServices; 

@MetaInfServices(javax.annotation.processing.Processor.class) 
public class SoapPropertyProcessor extends AbstractProcessor 
関連する問題