第1章 Red Hat Business Optimizer Spring Boot プロジェクトの生成

Spring Initialzr は Web ベースのアプリケーションで、少数のユーザー入力をもとに、Spring Boot 構造を作成します。Spring Initializr を使用して簡単に Maven または Gradle Spring Boot プロジェクトを生成し、Red Hat Business Optimizer 向けにカスタマイズできます。

手順

  1. Web ブラウザーで Spring Initializr を開きます。

    https://start.spring.io/
  2. プロジェクト、言語、Spring Boot バージョンを選択し、プロジェクトのメタデータを入力します。
  3. Add Dependencies をクリックし、Spring Web を選択して spring-boot-starter-web の依存関係を追加します。
  4. GENERATE をクリックします。プロジェクトの ZIP ファイルがダウンロードされます。
  5. ZIP ファイルを展開して、Spring Boot プロジェクトディレクトリーに移動します。
  6. Red Hat Business Optimizer の依存関係 (optaplanner-spring-boot-starter) を追加します。現在、optaplanner-spring-boot-starter は Spring Initializr に含まれていないため、ビルドファイルに手動で追加する必要があります。

    • Maven プロジェクトを生成した場合は optaplanner-spring-boot-starter 依存関係をプロジェクトの pom.xml に追加します。

      <dependencyManagement>
          <dependencies>
              <dependency>
                  <groupId>org.optaplanner</groupId>
                  <artifactId>optaplanner-spring-boot-starter</artifactId>
                  <version>{project-version}</version>
              </dependency>
          </dependencies>
      </dependencyManagement>

      以下の例では、optaplanner-spring-boot-starter 依存関係をプロジェクトの 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>
          <parent>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-parent</artifactId>
              <version>{version-org-spring-framework-boot}</version>
          </parent>
      
          <groupId>com.example</groupId>
          <artifactId>constraint-solving-ai-optaplanner</artifactId>
          <version>0.1.0-SNAPSHOT</version>
          <name>Constraint Solving AI with Red Hat Business Optimizer</name>
          <description>A Spring Boot Red Hat Business Optimizer example to generate a school timetable.</description>
      
          <properties>
              <java.version>1.8</java.version>
          </properties>
      
          <dependencies>
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-web</artifactId>
              </dependency>
              <dependency>
                  <groupId>org.optaplanner</groupId>
                  <artifactId>optaplanner-spring-boot-starter</artifactId>
              </dependency>
      
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-test</artifactId>
                  <scope>test</scope>
                  <exclusions>
                      <exclusion>
                          <groupId>org.junit.vintage</groupId>
                          <artifactId>junit-vintage-engine</artifactId>
                      </exclusion>
                  </exclusions>
              </dependency>
          </dependencies>
      
          <dependencyManagement>
              <dependencies>
                  <dependency>
                      <groupId>org.optaplanner</groupId>
                      <artifactId>optaplanner-spring-boot-starter</artifactId>
                      <version>{project-version}</version>
                  </dependency>
              </dependencies>
          </dependencyManagement>
      
          <build>
              <plugins>
                  <plugin>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-maven-plugin</artifactId>
                  </plugin>
              </plugins>
          </build>
      
      </project>
    • Gradle プロジェクトを生成した場合は optaplanner-spring-boot-starterbuild.gradle ファイルに追加します。

      implementation "org.optaplanner:optaplanner-spring-boot-starter:{project-version}"

      以下の例では optaplanner-spring-boot-starter 依存関係を、Gradle Java プロジェクトの build.gradle ファイルに追加します。

      plugins {
          id "org.springframework.boot" version "{version-org-spring-framework-boot}"
          id "io.spring.dependency-management" version "1.0.9.RELEASE"
          id "java"
      }
      
      group = "com.example"
      version = "0.1.0-SNAPSHOT"
      sourceCompatibility = "1.8"
      
      repositories {
          mavenCentral()
      }
      
      dependencies {
          implementation "org.springframework.boot:spring-boot-starter-web"
          implementation "org.optaplanner:optaplanner-spring-boot-starter:{project-version}"
          testImplementation("org.springframework.boot:spring-boot-starter-test") {
              exclude group: "org.junit.vintage", module: "junit-vintage-engine"
          }
      }
      
      test {
          useJUnitPlatform()
      }