Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

Maven Plugin for Azure で例外がでる場合の対処

Java 11を使っていると、mvn で例外が発生するので、その回避策のメモです。

> java --version
java 11.0.1 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

これは、一部ライブラリが標準でなくなってしまった影響です。実行結果を見ると、JAXBExceptionが発生していることがわかります。

www.oracle.com

> mvn azure-webapp:config
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------< test.webapp:test-server2 >----------------------
[INFO] Building test-server2 Maven Webapp 1.0-SNAPSHOT
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- azure-webapp-maven-plugin:1.5.4:config (default-cli) @ test-server2 ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.471 s
[INFO] Finished at: 2019-03-29T07:10:35+09:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.microsoft.azure:azure-webapp-maven-plugin:1.5.4:config (default-cli) on project test-server2: Execution default-cli of goal com.microsoft.azure:azure-webapp-maven-plugin:1.5.4:config failed: A required class was missing while executing com.microsoft.azure:azure-webapp-maven-plugin:1.5.4:config: javax/xml/bind/JAXBException

回避方法

とりあえず、plugin要素下に普通にJAXBへの依存を書けばよいです。

  <build>
    <finalName>test-server2</finalName>
    <plugins>
      <plugin>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure-webapp-maven-plugin</artifactId>
        <version>1.5.4</version>
        <dependencies>
          <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.1</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>

pluginの下に記述できるのを知らなくてしばし悩みました。根本的には、Pluginで対処してもらうしかなさそうですが。