0

处理遗留项目,我需要从 URL 的 jar 加载文本资源。然后将过滤文本资源并将其包含在输出中;这些资源来自已发布的工件。

从资源插件我看到只能提供一些目录;是否可以根据需要加载资源?

我想做这样的事情,但使用远程 jar 而不是工作区中的其他项目:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
    <execution>
    <id>copy-resources</id>
    <phase>process-resources</phase>
    <goals>
        <goal>copy-resources</goal>
    </goals>
    <configuration>
        <outputDirectory>${project.build.directory}/${project.build.finalName}</outputDirectory>
                        <resources>
                            <resource>
                                <directory>../<another project on the same workspace>/src/main/filtered-resources</directory>
                                <filtering>true</filtering>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>

正如其中一个答案所建议的那样,远程资源插件不起作用,因为导入的包中没有文件最终到达目标;我无法使用远程资源插件生成原始捆绑包(它是一个仍在使用且完全不受我控制的遗留项目)。

4

1 回答 1

1

我认为Maven 远程资源插件将满足您的需求。

编辑

从插件的使用页面获取的片段。该 XML 片段会将插件附加到generate-sources阶段(如果它不符合您的需要,请选择不同的),将下载apache-jar-resource-bundle工件并将其内容解压缩到${project.build.directory}/maven-shared-archive-resources.

为了获得更好的结果,建议使用bundle相同插件的目标创建资源工件。

<!-- Turn this into a lifecycle -->
<plugin>
  <artifactId>maven-remote-resources-plugin</artifactId>
  <version>1.4</version>
  <executions>
    <execution>
      <id>process-remote-resources</id>
      <phase>generate-sources</phase>
      <goals>
        <goal>process</goal>
      </goals>
      <configuration>
        <resourceBundles>
          <resourceBundle>org.apache:apache-jar-resource-bundle:1.0</resourceBundle>
        </resourceBundles>
      </configuration>
    </execution>
  </executions>
</plugin>

编辑 2:使用 AntRun 的替代解决方案

如果您的工件不适合 Maven 需求并且您需要更多定制的东西,那么使用 AntRun 插件您可以通过某种方式获得它:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.7</version>
  <executions>
    <execution>
      <id>download-remote-resources</id>
      <goals>
        <goal>run</goal>
      </goals>
      <configuration>
        <target>
          <get src="URL of the resource" dest="${project.build.directory}" />
          <unzip src="${project.build.directory}/filename.[jar|zip|war]" dest="${project.build.directory}/${project.build.finalName}" />
        </target>
      </configuration>
    </execution>
  </executions>
</plugin>
于 2013-01-28T14:28:54.610 回答