2012-04-25 81 views
1

編輯Maven的副本的src /主/資源/ services文件夾到/ META-INF

好吧,我現在可以更具體:

我在我的SCR /主/資源文件夾META- INF誰包含服務 /javax.annotation.processing.Processor

我的pom仍然是一樣的(有評論)。 如果我做「mvn clean install」,輸出jar只包含META-INF文件夾。

但是,如果我重命名文件夾服務,輸出jar包含我的類和META-INF文件夾與新的重命名文件夾和他的內容。


我有 - 我想 - 一個普通的maven2用戶的簡單問題。 我有一個簡單的子項目這個簡單的POM

<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/main /資源/服務/ javax.annotation.processing.Processor文件中的{}根/ META-INF/services生成的jar文件夾。

但是,如果我取消註釋資源部分,我的jar將只包含一個沒有類的META-INF文件夾!

你能幫我嗎?

回答

0

以下是instructions from Apache爲如何做到這一點,但它似乎是你正確地做。看看這個頁面,並確保你沒有犯一些小錯誤。

+0

你可以看到我更新:) – user1180339 2012-04-26 07:42:55

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 
相關問題