0

我想知道在使用 maven 依赖项插件的 dependency-unpack 目标时是否有办法强制存在要解包的依赖项。我正在使用下面的配置,问题是如果在 pom 的依赖项部分中没有为“${properties.artifactId}”指定依赖项,即使没有任何内容被解包,构建也会继续进行。它总是在测试阶段的后期失败,但如果在不存在依赖关系的情况下构建可能失败,那就容易多了。那么有没有人知道可以强制执行的方法?

谢谢

码头

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
      <execution>
        <id>unpack-properties</id>
        <phase>generate-resources</phase>
        <goals>
          <goal>unpack-dependencies</goal>
        </goals>
        <configuration>
          <includeArtifactIds>${properties.artifactId}</includeArtifactIds>
          <outputDirectory>${project.build.directory}</outputDirectory>
          <includes>${properties.file.name}</includes>
        </configuration>
      </execution>
    </executions>
  </plugin>
4

1 回答 1

0

几次处决maven-enforcer-plugin应该可以做到这一点。您需要在依赖插件之前运行一个,以确保 ${properties.artifactId} 具有值,然后在依赖插件之后运行另一个以确保目标位置中有文件。这是想法,根据您的要求进行修改。

如果可用的规则不太合适,您也可以编写自己的规则。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-enforcer-plugin</artifactId>
  <version>fillInTheVersion</version>
  <executions>
    <execution>
      <id>enforce-config-properties</id>
      <phase>validate</phase>
      <goals>
        <goal>enforce</goal>
      </goals>
      <configuration>
        <rules>
          <requireProperty>
            <property>properties.artifactId</property>
            <message><![CDATA[### Missing property 'properties.artifactId': the artifact that ....]]></message>
          </requireProperty>
        </rules>
      </configuration>
    </execution>
    <execution>
      <id>enforce-files-exist</id>
      <phase>process-resources</phase>
      <goals>
        <goal>enforce</goal>
      </goals>
      <configuration>
        <rules>
          <requireFilesExist>
            <files>
              <file>${project.build.directory}/${properties.artifactId}</file>
            </files>
            <message><![CDATA[### Did not find unpacked artifact ...]]></message>
          </requireFilesExist>
        </rules>
      </configuration>
    </execution>
  </executions>
</plugin>
于 2013-10-16T16:49:43.563 回答