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

Java Maven-检查配置值并停止处理,java,maven,pom.xml,Java,Maven,Pom.xml,我有一个POM文件,其中包含一个属性(在properties部分下),该属性有一个IP值,我们在将其推送到git时使用该IP值 <device.ip>1.2.3.4</device.ip> 1.2.3.4 但是对于我的构建,我需要使用另一个IP值,所以当我开始在新分支上工作时,我应该将它更改为我所需的IP 我希望能够在构建启动时检查变量值并中止它,因为变量值与我需要的不同 也欢迎任何其他解决办法 (我希望我的问题不会因为缺少代码而被降级——这里没有真正需要编写的代码。

我有一个POM文件,其中包含一个属性(在properties部分下),该属性有一个IP值,我们在将其推送到git时使用该IP值

<device.ip>1.2.3.4</device.ip>
1.2.3.4
但是对于我的构建,我需要使用另一个IP值,所以当我开始在新分支上工作时,我应该将它更改为我所需的IP

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

也欢迎任何其他解决办法

(我希望我的问题不会因为缺少代码而被降级——这里没有真正需要编写的代码。这个场景是不言自明的)

谢谢您的建议。

您可以使用支持此类检查的

规则的用法如下所示


[...]
org.apache.maven.plugins
maven enforcer插件
3.0.0-M2
强制执行财产
执行
device.ip
您必须设置device.ip属性!
.*\d.*
device.ip属性包含。。。
真的
[...]
您可以使用支持此类检查的

规则的用法如下所示


[...]
org.apache.maven.plugins
maven enforcer插件
3.0.0-M2
强制执行财产
执行
device.ip
您必须设置device.ip属性!
.*\d.*
device.ip属性包含。。。
真的
[...]

我建议将您的项目拆分为模块

  • 模块1包含没有任何配置的代码
  • 模块2指模块1,另外包含投入生产的内容。对于多个部署,请为每个部署创建一个附加模块。这就是您的生产属性所在
  • 模块3引用模块1(而不是2),包含开发所需的任何内容(如此属性和帮助器类的配置)。对于复杂场景,为每个场景创建一个附加模块

这对我很有效

我建议将您的项目分为几个模块

  • 模块1包含没有任何配置的代码
  • 模块2指模块1,另外包含投入生产的内容。对于多个部署,请为每个部署创建一个附加模块。这就是您的生产属性所在
  • 模块3引用模块1(而不是2),包含开发所需的任何内容(如此属性和帮助器类的配置)。对于复杂场景,为每个场景创建一个附加模块

这对我很有效

您可以使用AntRun插件检查属性,然后在满足条件时调用Fail任务。你可以使用BuildNumber插件来做到这一点。只需根据您的情况配置您的IP。为什么IP与您的git push相关?@khmarbaise该IP在pom中配置,并且包含生产设备IP。我的工作需要一个开发设备。IP是否可以根据开发和生产环境预测?您可以使用AntRun插件检查属性,然后在满足条件时调用Fail任务。你可以使用BuildNumber插件来做到这一点。只需根据您的情况配置您的IP。为什么IP与您的git push相关?@khmarbaise该IP在pom中配置,并且包含生产设备IP。我的工作需要一个开发设备。IP是否可以根据开发和生产环境进行预测?您建议的插件很好,但最终对我没有多大帮助,因为我必须将我的开发IP设置为regex标记值,而且无论如何,我必须在每次推送之前将其再次修改为生产IP。。。有没有办法解决这个问题?我想应该涉及到一些外部值,比如你建议的插件很好,但最终对我没有多大帮助,因为我必须将我的dev IP设置为regex标记值,而且无论如何,我必须在每次推送之前将其再次修改为生产IP。。。有没有办法解决这个问题?我想应该会涉及到一些外部价值
<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>