添加META-INF / services目录时,jar中没有.class文件

时间:2014-08-26 12:23:32

标签: java maven jar meta-inf

我刚刚开始使用Maven,我在创建所有课程的JAR时遇到了麻烦。实际上,我必须包含位于WEB-INF/services/javax.annotation.processing.Processor

的服务

我已经测试了这个问题的不同问题,当我删除/services目录时,JAR包含所有.class文件。

我读到它可能是一个错误的Maven文件夹结构,但问题发生在我有services目录时。

以下是使用资源的pom.xml文件的摘录:

<resource>
    <directory>${myRessources}</directory>
        <includes>
            <include>META-INF/**/*</include>
         </includes>
</resource>

maven控制台告诉我资源已成功复制,所以我认为这部分不是问题。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

嘿,你想用这样的东西:

<build>
  <sourceDirectory>src/main/java (or your .java you want to compile)</sourceDirectory>
   <resources>
    <resource>
     <directory>src/main/resources/META-INF/</directory>
     <targetPath>META-INF</targetPath>
    </resource>
   </resources>
</build>

sourceDirectory告诉maven要编译什么并放入目标文件夹(以及jar中)。然后资源说取我的META-INF /文件夹中的所有内容并将其放在jar文件的META-INF文件夹中。

答案 1 :(得分:1)

我调查并解决了问题:这是一个错误 - &gt; http://jira.codehaus.org/browse/MCOMPILER-97我添加了编译器选项-proc:none,现在工作正常。希望它能帮助其他人!

答案 2 :(得分:0)

对于解决* .jar或* .war文件的解决方案是什么,在创建存档文件后,例如用WinRAR打开它,并检查其内容。

在此之后,您可以在pom.xml文件中包含必要的资源,如之前所述。