0

私のプロジェクトにはいくつかのスキーマがあります。mvn deploy コマンドを実行しているとき。スキーマを集中型サーバーにコピーしています。

スキーマ変更の単体テストでは、最初にそれをサーバーにアップロードする必要があり、それからプロジェクトで使用できます。ローカルでもスキーマをセットアップした後、mvn deploy コマンドを実行してローカル サーバーにアップロードする必要があります。これは、既存の pom にインストール フェーズの構成がなかったためです。

そのために、インストール フェーズで同様のコピー実行を記述しました。以下は、プラグイン構成のスナップショットです。

     <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>xsd-publish</id>
                        <phase>deploy</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${xsd.publish.location}\event</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>src/main/resources</directory>
                                    <includes>
                                        <include>**/*.xsd</include>
                                    </includes>
                                </resource>
                            </resources>
                            <overwrite>true</overwrite>
                        </configuration>
                    </execution>
                    <execution>
                         <id>copy-xsd-local</id>
                         <phase>install</phase>
                          <goals>
                            <goal>copy-resources</goal>
                             </goals>
                              <configuration>
                                <outputDirectory>\\localhost\xsd\event</outputDirectory>
                                <resources>
                                  <resource>
                                    <directory>src/main/resources</directory>
                                    <includes>
                                        <include>**/*.xsd</include>
                                    </includes>
                                  </resource>
                                </resources>
                                <overwrite>true</overwrite>
                              </configuration>
                     </execution>
                </executions>
            </plugin>

この構成をローカル マシンで実行すると、正常に動作し、期待どおりに動作します。TeamCity を使用してプロジェクトをビルドしようとすると、チームシティには独自の servr があり、xsd という名前のフォルダーがないため、失敗しました。そして理想的には、Team city から実行しているときに、このプラグインの実行を呼び出したくありません。

なにか提案を?

4

1 に答える 1

0

環境エントリによってアクティブ化されたさまざまなプロファイルを使用できます。

ビルド サーバーで XSDTeamCity env エントリを定義します。次に、それぞれが対応する実行を持つ 2 つのプロファイルを使用します。プロファイルのアクティブ化は次のようになります。

<profiles>
    <profile>
        <id>development_profile</id>
        <activation>
            <property>
                <name>!XSDTeamCity</name>
            </property>
        </activation>
        <!--plugin executions here will run only on dev server-->
    </profile>
    <profile>
        <id>teamcity_profile</id>
        <activation>
            <property>
                <name>XSDTeamCity</name>
            </property>
        </activation>
        <!--plugin executions here will run only on build server-->
    </profile>
</profiles>

もう1つ、たとえばjarファイルにあるXSDに対してXMLを簡単に検証できます。この XSD をどこかにコピーする必要があるのはなぜですか?

于 2014-12-05T21:55:22.077 に答える