如何使用 maven 或 pom.xml 更新属性文件

mon*_*ntu 2 java pom.xml maven

我创建了一个自动化框架,在其中读取属性文件“config.properties”中的值。

\n\n

我的 config.propertioes 文件包含以下内容:

\n\n
BrowserName=${browser}\nEnvironment=${env}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我正在从属性文件中读取浏览器值并将其传递给我的 selenium 脚本来运行它。

\n\n

现在我想使用 pom.xml 将“ ${browser}"&& ”替换${env}"为值“ ie“ && ” IT"。是否有任何方法/插件可以使用 pom.xml 编辑属性文件。

\n\n

请建议。

\n\n

@Keshava\n我将整个示例放在下面,如下所示:\n1.有 2 个属性文件:\xe2\x97\xa6project.properties:这是我们在存储库中提交的文件。它包含如下数据: \xe2\x97\xbeproject.connection.username=@@DB_USERNAME@@\nproject.connection.password=@@DB_PASSWORD@@

\n\n

\xe2\x97\xa6build.properties:这是我们不在存储库中提交的文件,并且在每个部署环境中维护,无论是开发人员环境、UAT 环境还是生产环境。该文件的内容如下:\xe2\x97\xbedb.username=mydbuser\ndb.password=mydbpassword

\n\n

2.在project\xe2\x80\x99s pom.xml中添加以下插件和执行:

\n\n
<plugin>\n                <groupId>com.google.code.maven-replacer-plugin</groupId>\n                <artifactId>maven-replacer-plugin</artifactId>\n                <version>1.3.5</version>\n                <executions>\n                    <execution>\n                        <id>replaceTokens</id>\n                        <phase>prepare-package</phase>\n                        <goals>\n                            <goal>replace</goal>\n                        </goals>\n                    </execution>\n                </executions>\n                <configuration>\n                    <file>target/classes/project.properties</file>\n                    <replacements>\n                        <replacement>\n                            <token>@@DB_USERNAME@@</token>\n                            <value>${db.username}</value>\n                        </replacement>\n                        <replacement>\n                            <token>@@DB_PASSWORD@@</token>\n                            <value>${db.password}</value>\n                        </replacement>\n                    </replacements>\n                </configuration>\n</plugin>\n
Run Code Online (Sandbox Code Playgroud)\n\n

从上面,我明白那"@@DB_USERNAME@@"是来自"project.properties". 但是,该值将从哪个属性文件中"${db.username}"获取?我的 pom 如何理解从哪里获取"${db.username}"

\n\n

我是否需要在 Maven 目标中传递这个值,如下所示:

\n\n
mvn clean install -Ddb.username=myuserid\n
Run Code Online (Sandbox Code Playgroud)\n

小智 5

您好,您可以使用maven资源插件

这个插件实现了“ Maven Filtering ”。

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.0.2</version>
        <executions>
          <execution>
            <id>selenium-profile-chrome</id>
            <!-- here the phase you need -->
            <phase>validate</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/target/selenium</outputDirectory>
              <resources>          
                <resource>
                  <directory>src/non-packaged-resources</directory>
                  <filtering>true</filtering>
                </resource>
              </resources>              
            </configuration>            
          </execution>
        </executions>
      </plugin>
    </plugins>
    ...
  </build>
  ...
</project>
Run Code Online (Sandbox Code Playgroud)