質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.53%

MavenでSVNにwarファイルを追加する方法

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 151

takeosan

score 1

Sonatype Nexus Repository Managerから該当のバージョンのWarファイルを取得して
SVNに登録することを考えております。(Jenkinsで実行)

SVNの1つのフォルダにWarファイルを複数登録する時もあれば、1つだけ登録する時もあります。
そこの処理をどのようにすればいいのかが分かりません。

SVNのフォルダを作ってwarを登録するような流れになっているのですが、
同じフォルダ名に異なるwarファイルを追加しようとすると、以下のエラーが発生します。

#今のPom.xmlの記述
<!-- SVNにアクセスするプラグイン -->
      <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-scm-plugin</artifactId>
              <version>1.11.2</version>

              <configuration>
                <username>${svnUser}</username>
                <password>${svnPassword}</password>
                <checkoutDirectory>${project.basedir}/work</checkoutDirectory>
                <workingDirectory>${project.basedir}/work</workingDirectory>
              </configuration>

              <executions>
                <!-- チェックアウト -->
                  <execution>
                        <id>checkout</id>
                        <phase>pre-clean</phase>
                        <goals>
                            <goal>checkout</goal>
                        </goals>
                        <configuration>
                        </configuration>
                    </execution>

          <!-- 追加 -->
                  <execution>
                        <id>add</id>
                        <phase>post-clean</phase>
                        <configuration>
                            <includes>${folderName}/*.jar,${folderName}/*.war</includes>
                        </configuration>
                        <goals>
                            <goal>add</goal>
                        </goals>
                    </execution>

                    <!-- チェックイン -->
                  <execution>
                        <id>checkin</id>
                        <phase>post-clean</phase>
                        <configuration>
                            <message>${checkinMessage}</message>
                        </configuration>
                        <goals>
                            <goal>checkin</goal>
                        </goals>
                    </execution>

              </executions>

            </plugin>
#エラー
svn: warning: W150002: 'E:\getMaven\SvnSample\work\tag0205-2_1.0.0-SNAPSHOT\NexusSample.war' is already under version control
svn: E200009: Could not add all targets because some targets are already versioned
svn: E200009: Illegal target for the requested operation

必ず同じ複数ファイルを登録する場合はpomに複数<dependency>を記述すればいいのは分かったのですが。
どちらかだけ、または両方というようにしたい場合、pom.xmlを毎回直すのではなく、
ことなる方法で可能でしょうか?

どちらかの場合、選択できるとか、
両方の場合、pom.xmlは分けてビルドを実行してもフォルダにファイルを追加できるとか。

#複数記載した場合は複数登録できました
<!--svnに登録するファイル名変更  -->
<!-- ① -->
     <dependency>
          <groupId>${warGroupId}</groupId>
          <artifactId>${warArtifactId}</artifactId>
          <version>${appVersion}</version>
          <type>war</type>
        </dependency>

<!-- ② -->
        <dependency>
          <groupId>${warGroupIdA}</groupId>
          <artifactId>${warArtifactIdA}</artifactId>
          <version>${appVersion}</version>
          <type>war</type>
        </dependency>

知識が無くて、実現できるのかも、実現する方法も分からず困っております。
具体的にpom.xmlの記述の仕方等を教えて頂けると助かります。
宜しくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

プロファイル機能で複数設定(やりたいパターンの差分)をしてください。

<project ...>
    ...
    <profiles>
        <profile>
            <id>war-1</id>
            <!-- <project ...> の差分 -->
        </profile>
        <profile>
            <id>war-2</id>
            <!-- <project ...> の差分 -->
        </profile>
    </profiles>
    ...
</project>

以下のいずれかで起動

mvn -P war-1[,....]
mvn -P war-2[,....]
mvn -P war-1,war-2[,....]

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/02/06 16:23

    ありがとうございます。
    教えて頂いた方法でファイルの登録の振り分けができました。
    1点、SVN登録前にRenameでファイル名を変更しているのですが、処理を振り分けようとプロファイル内に入れるとエラーになってしまいました。
    <build><plugin>~はプロファイル機能を使えないのでしょうか。

    もし、解決方法が分かれば教えて下さい。
    宜しくお願い致します。


    1のファイル名と2のファイル名をプロパティの値でそれぞれ設定しています。
    ```
    #プロパティ
    <properties>
    <!-- SVNに登録するwar情報① -->
    <warGroupId-1>app.sample</warGroupId-1>
    <warArtifactId-1>CopyTagNexusSample</warArtifactId-1>


    <!-- SVNに登録するwar情報② -->
    <warGroupId-2>app.sample</warGroupId-2>
    <warArtifactId-2>TagNexusSample</warArtifactId-2>
    </properties>
    ```


    ```
    #プロファイルに記述したエラーになる処理
    <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
    <!--ファイル名をリネームするプラグイン -->
    <plugin>
    <groupId>com.coderplus.maven.plugins</groupId>
    <artifactId>copy-rename-maven-plugin</artifactId>
    <version>1.0.1</version>
    <executions>
    <execution>
    <id>filerename</id>
    <phase>post-clean</phase>
    <goals>
    <goal>rename</goal>
    </goals>
    <configuration>
    <fileSets>
    <!-- warファイルのリネーム -->
    <fileSet>
    <sourceFile>${project.basedir}/work/${folderName}/${warArtifactId-1}-${appVersion}.war</sourceFile>
    <destinationFile>${project.basedir}/work/${folderName}/${warArtifactId-1}.war</destinationFile>
    </fileSet>
    <fileSet>
    <sourceFile>${project.basedir}/work/${folderName}/${warArtifactId-2}-${appVersion}.war</sourceFile>
    <destinationFile>${project.basedir}/work/${folderName}/${warArtifactId-2}.war</destinationFile>
    </fileSet>
    </fileSets>
    </configuration>
    </execution>
    </executions>
    </plugin>
    </plugins>
    </build>
    ```

    ```
    #エラー
    cvc-complex-type.2.4.a: Invalid content was found starting with element 'sourceDirectory'. One of '{"http://maven.apache.org/POM/4.0.0":defaultGoal, "http://maven.apache.org/POM/4.0.0":resources, "http://maven.apache.org/POM/4.0.0":testResources, "http://
    maven.apache.org/POM/4.0.0":directory, "http://maven.apache.org/POM/4.0.0":finalName, "http://maven.apache.org/POM/4.0.0":filters, "http://maven.apache.org/POM/4.0.0":pluginManagement, "http://maven.apache.org/POM/4.0.0":plugins}' is expected.
    ```

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる