UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Maven】pom.xmlにprofileを設定する

MavenプロジェクトをGAEにデプロイする時、複数のapp.yamlを用意しておいてデプロイ先のサービスを切り替えたい

app.yamlはGAEの設定が書かれているファイルで、このような感じでGAEのサービス名を指定することができる

...
service: foo-service
...

このfoo-service意外にbar-servicebaz-serviceをデプロイ先にしたいときにわざわざ書き換えるのは手間なので

このような構造でapp.yamlを用意しておき

src/main/appengine/foo
├ foo
│ └ app.yaml
├ bar
│ └ app.yaml
└ baz
  └ app.yaml

Mavenプロジェクトなのでpom.xmlにprofileを設定する

  <profiles>
    <profile>
      <id>foo</id>
      <build>
        <plugins>
          <plugin>
            <groupId>com.google.cloud.tools</groupId>
            <artifactId>appengine-maven-plugin</artifactId>
            <version>${appengine-plugin.version}</version>
            <configuration>
              <appEngineDirectory>${basedir}/src/main/appengine/foo</appEngineDirectory>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>bar</id>
      <build>
        <plugins>
          <plugin>
            <groupId>com.google.cloud.tools</groupId>
            <artifactId>appengine-maven-plugin</artifactId>
            <version>${appengine-plugin.version}</version>
            <configuration>
              <appEngineDirectory>${basedir}/src/main/appengine/bar</appEngineDirectory>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>baz</id>
      <build>
        <plugins>
          <plugin>
            <groupId>com.google.cloud.tools</groupId>
            <artifactId>appengine-maven-plugin</artifactId>
            <version>${appengine-plugin.version}</version>
            <configuration>
              <appEngineDirectory>${basedir}/src/main/appengine/baz</appEngineDirectory>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
</profiles>

IntelliJ IDEAを使っている場合

Mavenのパネルでこんな感じで一覧とどのプロフィールを使うか選択できるので便利 f:id:uggds:20200630115148p:plain:w300