Maven资源插件:如果目录不存在,构建不会失败

时间:2019-04-23 02:16:24

标签: java eclipse maven

在我的pom.xml中,我具有以下配置:
构建插件:

<plugin>
  <artifactId>maven-resources-plugin</artifactId>
  <executions>
    <execution>
      <id>copy-resources</id>
      <phase>validate</phase>
      <goals>
        <goal>copy-resources</goal>
      </goals>
      <configuration>
        <outputDirectory>${build.directory}/classes/static/</outputDirectory >
        <resources>
          <resource>
            <!-- this is defined in profiles -->
            <directory>${myResourceFolder}</directory>
          </resource>
        </resources>
      </configuration>
    </execution>
  </executions>
</plugin>


配置文件定义:

<profiles>
  <profile>
      <id>development</id>
      <activation>
        <!-- this profile is active by default -->
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <myResourceFolder>/myDevelopmentFolder</myResourceFolder>
      </properties>
  </profile>
  <profile>
      <id>production</id>
      <properties>
        <myResourceFolder>${env.MY_PRODUCTION_FOLDER}</myResourceFolder>
      </properties>
  </profile>
</profiles>


$ {myResourceFolder}在不同的配置文件中定义的可以是:

  • / myDevelopmentFolder
  • MY_PRODUCTION_FOLDER

其中“ / myDevelopmentFolder”是我的本地开发文件夹,“ MY_PRODUCTION_FOLDER”是在生产版本中定义为环境变量的任何文件夹。
这些配置编译良好。
但我想实现的是,如果缺少此文件夹,

  

maven-resources-plugin应该失败。


无论如何,在Maven中可以实现这一目标吗?

谢谢,
阿尔塔尼斯(Artanis)

1 个答案:

答案 0 :(得分:0)

1)首先,我认为为不同的环境构建不同的二进制文件是一种不好的方法。最好捆绑所有资源,只在运行时使用适当的资源

2)如果您仍然想用这种错误的方式,则可以尝试对丢失的文件(https://maven.apache.org/guides/introduction/introduction-to-profiles.html)进行配置文件激活。此“构建破坏者”配置文件应以某种方式破坏构建。例如,它可能包含Maven Enforcer插件(https://maven.apache.org/enforcer/maven-enforcer-plugin/usage.html),该插件禁止带有解释性消息的资源插件