Search code examples
mavenmaven-3pom.xml

Is there a way in maven to assure that a property is set


I just tracked down a difficult maven issue that was caused by a bad property value.

The property is a path to an alternate JVM that is used a run-time by a test. I would like to make maven fail early by detecting if the path is valid or not. What might be a way to accomplish this?

I plan to dig into antrun to see if there is a way to make it run first so that it can check, but that seems like overkill.

Question: How can I do this cleanly and simply?


Solution

  • Yes, you can use the maven-enforcer-plugin for this task. This plugin is used to enforce rules during the build and it has a built-in requireFilesExist rule:

    This rule checks that the specified list of files exist.

    The following configuration will enforce that the file ${project.build.outputDirectory}/foo.txt exists and will fail the build if it does not.

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-enforcer-plugin</artifactId>
      <version>1.4.1</version>
      <executions>
        <execution>
          <id>enforce-files-exist</id>
          <goals>
            <goal>enforce</goal>
          </goals>
          <configuration>
            <rules>
              <requireFilesExist>
                <files>
                 <file>${project.build.outputDirectory}/foo.txt</file>
                </files>
              </requireFilesExist>
            </rules>
            <fail>true</fail>
          </configuration>
        </execution>
      </executions>
    </plugin>