9

如果调用集成测试生命周期,如果开发人员在应用程序测试期间提供来自属性文件的身份验证数据,我想检查 Maven 。

作为国家惯例,将身份验证数据提交到源树是不好的。用户名和密码等设置中描述的标准 maven 方法不应与 pom.xml 一起分发

但我不喜欢这种方法(我想要每个结帐设置,而不是每个开发主机!!)并希望在 VCS(SVN/GIT/HG)中提供src/text/resources/auth.properties.example作为示例和想要在 Maven 中检查是否存在src/text/resources/auth.properties的代码,它是每个开发人员拥有的(或每个项目检出!!),但前提是调用了集成测试阶段(或集成后的任何其他阶段-测试阶段)。如果执行任何先前的阶段(如compiletest) - 必须禁用此检查。

Maven验证阶段旨在检查构建一致性(请参阅Introduction-to-the-lifecycle)。但是没有任何阶段检查!所以我使用预集成测试阶段。

我编写工作代码:

<?xml 版本="1.0" 编码="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.mycompany.app</groupId>
  <artifactId>我的应用</artifactId>
  <包装>罐子</包装>
  <版本>1.0</版本>
  <name>我的应用</name>

  <个人资料>

    <个人资料>
      <id>existent.properties</id>
      <激活>
        <文件>
          <missing>auth.properties</missing>
        </文件>
      </激活>
      <构建>
        <插件>
          <插件>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <版本>1.6</版本>
            <执行>
              <执行>
                <phase>预集成测试</phase>
                <目标>
                  <目标>运行</目标>
                </目标>
                <配置>
                  <目标>
                    <echo>为了运行集成文本生命周期:</echo>
                    <echo> 1) 将“auth.properties.example”重命名为“auth.properties”。</echo>
                    <echo> 2) 使用您自己的身份验证数据填写“auth.properties”。</echo>
                    <fail message="找不到'auth.properties'。"/>
                  </目标>
                </配置>
              </执行>
            </执行>
          </插件>
        </插件>
      </build>
    </profile>

  </profiles>

  <构建>

    <插件>

      <插件>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <版本>1.6</版本>
        <执行>

          <执行>
            <id>测试</id>
            <阶段>测试</阶段>
            <目标>
              <目标>运行</目标>
            </目标>
            <配置>
              <目标>
                <echo>JUnit 测试!</echo>
              </目标>
            </配置>
          </执行>

          <执行>
            <id>集成测试</id>
            <phase>集成测试</phase>
            <目标>
              <目标>运行</目标>
            </目标>
            <配置>
              <目标>
                <echo>硒测试!</echo>
              </目标>
            </配置>
          </执行>

        </执行>
      </插件>

    </插件>

  </build>

</项目>

但作为 GNU Make 大师,我不喜欢上面的代码。我对吗?Maven的使用错误吗?

4

1 回答 1

4

你的方法很好(如果有点过度设计恕我直言 - 我只是把那种东西放在自述文件/项目维基中;当试图阅读它时,如果没有文件,构建应该会失败)

您可能还想使用 Enforcer 目标而不是 antrun:http ://maven.apache.org/enforcer/enforcer-rules/requireFilesExist.html

于 2012-12-20T16:04:51.623 回答