Maven 程序集:从依赖项的特定子文件夹中复制

Art*_*cis 5 maven maven-assembly-plugin

我正在使用 Maven 程序集插件来构建我们产品的 WAR(之前由 Ant 完成)。由于 Apache Ant 有许多遗留问题,因此有一个特定的要求可以使构建过程变得更容易:将依赖项的特定子文件夹(例如 jar 或 war 资源)复制到特定的目标子文件夹。

到目前为止,我了解到程序集描述符允许指定<outputDirectory>,但是有没有机会指定<sourceDirectory>?例如,我想将此规则应用于单个 WAR 或 JAR 类型依赖项。

考虑这个程序集描述符片段的示例(不是 100% 准确):

    <dependencySet>
        <unpack>true</unpack>
        <scope>runtime</scope>
        <useProjectArtifact>false</useProjectArtifact>
        <includes>
            <include>my-specific-dependency:war</include>
        </includes>
        <outputDirectory>WEB-INF/myresources</outputDirectory>
    </dependencySet>
Run Code Online (Sandbox Code Playgroud)

我想说我想将某些文件夹从 my-specific-dependency:war 复制到 WEB-INF/myresources。

编辑注意:我知道这不是一个非常正确的要求,因为我们不应该知道工件内部有什么,正确的方法是声明将整个工件提取到目标目录(简洁的声明方法)。

nwi*_*ler 3

您应该能够使用 Maven 依赖项插件来执行此操作,并实现解压目标:\n http://maven.apache.org/plugins/maven-dependency-plugin/unpack-mojo.html

\n\n
<plugin>\n  <groupId>org.apache.maven.plugins</groupId>\n  <artifactId>maven-dependency-plugin</artifactId>\n  <executions>\n    <execution>\n      <id>unpack-database-scripts</id>\n      <phase>compile</phase>\n      <goals>\n        <goal>unpack</goal>\n      </goals>\n      <configuration>\n          <artifactItems>\n           <artifactItem>\n             <groupId>myGroup</groupId>\n             <artifactId>myArtifact</artifactId>\n             <version>1.0</version>\n             <type>war</type>\n             <overWrite>true</overWrite>\n             <includes>...</includes>\n             <outputDirectory>\xe2\x80\xa6</outputDirectory>\n           </artifactItem>\n         </artifactItems>\n      </configuration>\n    </execution>\n  </executions>\n</plugin>\n
Run Code Online (Sandbox Code Playgroud)\n