maven-jar-plugin文件过滤

时间:2013-02-13 14:02:33

标签: java maven maven-jar-plugin

我的src/main/java/com/pac/report.pl中有一个perl文件,我想将其作为jar文件中类的一部分打包。

使用maven maven-jar-plugin include指令,我在下面尝试了以及我从网上删除的各种其他建议,但是不会将perl文件作为我的类的一部分复制到jar文件中。有谁知道我做错了什么。

<plugin>
 <artifactId>maven-jar-plugin</artifactId>
 <version>2.4</version>
  <configuration>
    <includes>
     <include>**/*</include>
     </includes>
  </configuration>
 </plugin>

修改

另请允许我指出,由于遗留呼叫和相关原因,我不希望将文件放在资源目录中。

1 个答案:

答案 0 :(得分:3)

这是因为打包到 jar 中的类不是来自 src ,而是来自目标(特别是/target/classes),而且完全是编译器忽略你的非java文件。

尝试将文件放在src/main/resources/com/pac/report.pl中,然后将其打包到jar中(相对路径为/com/pac/report.pl),因为这是资源插件查找要添加到的其他文件的默认位置jar插件运行之前的目标。

编辑 - 或者,如果您不希望/不能像maven所期望的那样执行此操作,您可以手动bind an execution of the resources plugin到生命周期来获取文件并将其复制到目标。像这样的东西:

<build>
    <plugins>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.6</version>
        <executions>
          <execution>
            <id>copy-resources</id>
            <phase>compile</phase> <!-- or later -->
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/target/classes</outputDirectory>
              <resources>          
                <resource>
                  <!-- path to your *.pl file here -->
                </resource>
              </resources>              
            </configuration>            
          </execution>
        </executions>
      </plugin>
    </plugins>
    ...
  </build>