0

編集:解決済み私は自分のpomで2回設定しました。

Mavenでプロダクションプロファイルを設定しています。そして、正しいproduction.properties-filesをコピーして標準ファイルを削除するために、私はmaven-antrun-pluginを使用しています。

しかし、私はテストを実行したくありません。そして、何らかの理由で、このプラグインは、機能していない(そして、使用されないために機能しないはずの)いくつかのcanoo-web-testsを実行しようとします。

antrunプラグインでファイルのみをコピーする方法についてのアイデアはありますか?

antrunコードは次のとおりです。

                    <plugin>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>run</goal>
                            </goals>
                            <configuration>
                                <tasks>
                                    <delete file="${project.build.outputDirectory}/properties/externalResources.properties"/>
                                    <delete file="${project.build.outputDirectory}/properties/externalResources.prod.properties"/>
                                    <copy file="src/main/resources/properties/externalResources.prod.properties"
                                          tofile="${project.build.outputDirectory}/properties/externalResources.properties"/>
                                </tasks>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

そして、これがいくつかのテストを行おうとしていることを示すエラーです:

[INFO] Executing tasks
[delete] Deleting: C:\xxx\target\classes\properties\externalResources.properties
[delete] Deleting: C:\xxx\target\classes\properties\externalResources.prod.properties
[copy] Copying 1 file to C:\xxx\target\classes\properties
Trying to override old definition of task retry
[echo] Testing 'XXX-1.2.0' with
[echo]                                                                     locale 'no'
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------

そして、それがweb-tests.xmlを読み取ろうとしていることを示すスタックトレースであり、そのファイルにエラーがあるため、ビルドは失敗します。

4

1 に答える 1

0

Mavenで適切な構成を使用することで実現できる単一のモジュールで、さまざまな構成に基づいてさまざまなアーティファクトを作成する可能性が必要だと思われます。次のような状況になる可能性があります。

.
|-- pom.xml
`-- src
    |-- main
    |   |-- java
    |   |-- resources
    |   |-- environment
    |   |   |-- test
    |   |   |   `-- database.properties
    |   |   |-- qa
    |   |   |   `-- database.properties
    |   |   `-- production
    |   |       `-- database.properties
    |   `-- webapp

これは Web アプリケーションの例ですが、jar や ear などの任意のアーティファクトで機能します。さらに、pom のさまざまな領域の構成が必要です。

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
      <execution>
        <id>test</id>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
        <configuration>
          <descriptors>
            <descriptor>${project.basedir}/src/main/assembly/test.xml</descriptor>
          </descriptors>
        </configuration>
      </execution>
      <execution>
        <id>qa</id>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
        <configuration>
          <descriptors>
            <descriptor>${project.basedir}/src/main/assembly/qa.xml</descriptor>
          </descriptors>
        </configuration>
      </execution>
      <execution>
        <id>production</id>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
        <configuration>
          <descriptors>
            <descriptor>${project.basedir}/src/main/assembly/production.xml</descriptor>
          </descriptors>
        </configuration>
      </execution>
    </executions>
  </plugin>

すべての記述子には適切なフォルダーが含まれています。

 <id>test</id>
  <formats>
    <format>war</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <dependencySets>
    <dependencySet>
      <unpack>true</unpack>
      <useProjectArtifact>true</useProjectArtifact>
    </dependencySet>
  </dependencySets>
  <fileSets>
    <fileSet>
      <outputDirectory>WEB-INF</outputDirectory>
      <directory>${basedir}/src/main/environment/test/</directory>
      <includes>
        <include>**</include>
      </includes>
    </fileSet>
  </fileSets>
</assembly>

これにより、maven mvn clean パッケージの単純な実行が行われ、環境ごとに (分類子を使用して) 異なるアーティファクトが生成されます。詳細な説明はこちらにあります。

于 2012-04-21T09:39:50.780 に答える