Maven-检查配置值并停止处理

时间:2018-12-31 07:30:48

标签: java maven pom.xml

我有一个POM文件,其中包含一个属性(在“属性”部分下),该属性具有将其推入git时使用的IP值。

<device.ip>1.2.3.4</device.ip>

但是对于我的构建,我需要使用另一个IP值,因此当我开始在新分支上工作时,应该将其更改为所需的IP。

我希望能够在构建启动时检查变量值,并在变量值与我需要的值不同的情况下中止它。

也欢迎其他任何解决方案。

(我希望我的问题不会因为缺少代码而被降级-这里没有真正的代码可写。这种情况很容易解释)

谢谢您的建议。

2 个答案:

答案 0 :(得分:2)

您可以使用支持此类检查的maven-enforcer-plugin

requirePropery规则的用法如下。

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.0.0-M2</version>
        <executions>
          <execution>
            <id>enforce-property</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireProperty>
                  <property>device.ip</property>
                  <message>You must set a device.ip property!</message>
                  <regex>.*\d.*</regex> <!-- Express the value you need. -->
                  <regexMessage>The device.ip property contain...</regexMessage>
                </requireProperty>
              </rules>
              <fail>true</fail>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

答案 1 :(得分:2)

我建议将您的项目分成模块。

  • 模块1包含没有任何配置的代码。
  • 模块2引用模块1,并另外包含投入生产的内容。对于多个部署,为每个部署创建一个附加模块。这是您的生产资产去的地方。
  • 模块3引用模块1(但不引用2),其中包含开发所需的任何内容(此属性和帮助程序类之类的配置)。对于复杂的场景,请为每个场景添加一个附加模块。

这对我来说效果很好。