tamuraです。
今回はTomcatにデプロイします。


目標

  • warファイルを作成する
  • Tomcatにデプロイする
    • デプロイ後にアクセスしてpart2と同じ結果となること

58.2 Packaging executable jar and war files 一部ここの記述を参考にしています。

pom.xmlの変更

pom.xmlを変更します。

<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<project xmlns=\"http://maven.apache.org/POM/4.0.0\"
         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.springframework</groupId>
  <artifactId>gs-serving-web-content</artifactId>
  <version>0.1.0</version>

  <!-- これを追加 -->
  <packaging>war</packaging>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.2.1.RELEASE</version>
  </parent>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

    <!-- ここから -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>provided</scope>
    </dependency>
    <!-- ここまで追加 -->
  </dependencies>


  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>

      <!-- ここから -->
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <configuration>
          <url>http://localhost:8080/manager/text</url>
          <username>admin</username>
          <password>admin</password>
          <path>/gs</path>
          <update>true</update>
        </configuration>
      </plugin>
      <!-- ここまで追加 -->
    </plugins>
  </build>

  <repositories>
    <repository>
      <id>spring-milestone</id>
      <url>https://repo.spring.io/libs-release</url>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>spring-milestone</id>
      <url>https://repo.spring.io/libs-release</url>
    </pluginRepository>
  </pluginRepositories>
</project>

tomcat7-maven-pluginmvnコマンドでデプロイをするために設定しています。 URL、ユーザID、パスワードはそれぞれの環境用に変更してください。

手動などでデプロイする場合はここの記述は不要です。

初期化クラスの追加

web.xmlのかわりにInitializerクラスを定義し、そこでweb.xmlと同等の定義をします。

src/main/java/hello/Initializer.java

package hello;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;

public class Initializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(AppConfig.class);
    }
}

設定クラスの追加

applicationContext.xmlのかわりにAppConfigクラスを定義し、そこでapplicationContext.xmlと同等の設定を行います。 といってもpart2まではapplicationContext.xmlを使っていないので、今回は何も定義しません。

src/main/java/hello/AppConfig.java

package hello;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class AppConfig {
}

ビルド・デプロイ

mvn clean
mvn package tomcat7:deploy

念のため前回までに生成されたバイナリを削除してからビルドします。 tomcat7:deploypom.xmlで設定したTomcatに対してデプロイを行います。

ここでは /gs というパスを追加しているため、 http://localhost:8080/gs/greeting にアクセスします。 前回とまったく同じ画面が出てきます。