让 maven 复制构建 jar 中的其他文件(不是资源,而是任何包中的任何文件)



我有一个包含一些 ruby 文件的包org.myapp.mypackage*.rb ),我需要将它们与 java 类文件一起包含在同一个包的生成的构建 jar 中。

我如何告诉我的朋友 Maven 这样做?

注意:不,我无法复制到其他任何地方,但感谢您的建议。 :)

您可以修改 POM <build>位的资源部分:

<resources>
  <resource>
    <directory>src/main/resources</directory>
  </resource>
  <resource>
    <filtering>false</filtering>
    <directory>src/main/java</directory>
    <includes>
      <include>*.rb</include>
    </includes>
    <excludes>
      <exclude>**/*.java</exclude>
    </excludes>
  </resource>
</resources>

或者,另一个答案(在src/main/resources中创建相同的包结构)也将起作用。

不确定我是否正确理解了这个问题,但是如果您的 Ruby 文件是由 maven 和声明为依赖项,您可以使用 shade 插件来包含结果 JAR 文件中的内容:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>1.4</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <artifactSet>
                    <includes>
                        <include>org.myapp.mypackage:mypackage</include>
                    </includes>
                </artifactSet>
                <filters>
                    <filter>
                        <artifact>org.myapp.mypackage:mypackage</artifact>
                        <includes>
                            <include>org/my/package/*.rb</include>
                        </includes>
                    </filter>
                </filters>
            </configuration>
        </execution>
    </executions>
</plugin>

将它们放在正确的目录中(一般是 src/main/resources)和它们应正确捆绑到罐子中。为了放置 *.rb 文件,请在 src/main/resources 文件夹下创建相同的目录结构。

相关内容

最新更新