5.2. 使用 Maven 插件创建 OptaPlanner 红帽构建的 Quarkus Maven 项目


您可以使用 Apache Maven 和 Quarkus Maven 插件使用 OptaPlanner 和 Quarkus 应用程序启动并运行。

先决条件

  • 已安装 OpenJDK 11 或更高版本。Red Hat build of Open JDK 位于红帽客户门户网站中的 Software Downloads 页面中(需要登录)。
  • 已安装 Apache Maven 3.8 或更高版本。Maven 可从 Apache Maven 项目网站 获得。

流程

  1. 在命令终端中,输入以下命令验证 Maven 是否使用 JDK 11,并且 Maven 版本是否为 3.8 或更高版本:

    mvn --version
    Copy to Clipboard Toggle word wrap
  2. 如果上述命令没有返回 JDK 11,请将 JDK 11 的路径添加到 PATH 环境变量中,然后再次输入上述命令。
  3. 要生成 Quarkus OptaPlanner quickstart 项目,请输入以下命令:

    mvn com.redhat.quarkus.platform:quarkus-maven-plugin:2.7.6.Final-redhat-00006:create \
        -DprojectGroupId=com.example \
        -DprojectArtifactId=optaplanner-quickstart  \
        -Dextensions="resteasy,resteasy-jackson,optaplanner-quarkus,optaplanner-quarkus-jackson" \
        -DplatformGroupId=com.redhat.quarkus.platform
        -DplatformVersion=2.7.6.Final-redhat-00006 \
        -DnoExamples
    Copy to Clipboard Toggle word wrap

    这个命令在 ./optaplanner-quickstart 目录中创建以下元素:

    • Maven 结构
    • src/main/docker中的 Dockerfile 文件示例
    • 应用程序配置文件

      Expand
      表 5.1. mvn io.quarkus:quarkus-maven-plugin:2.7.6.Final-redhat-00006:create 命令中使用的属性
      属性描述

      projectGroupId

      项目的组 ID。

      projectArtifactId

      项目的工件 ID。

      extensions

      用于此项目的 Quarkus 扩展列表。如需 Quarkus 扩展的完整列表,请在命令行中输入 mvn quarkus:list-extensions

      noExamples

      创建带有项目结构的项目,但没有测试或类。

      projectGroupIDprojectArtifactID 属性的值用于生成项目版本。默认项目版本为 1.0.0-SNAPSHOT

  4. 要查看您的 OptaPlanner 项目,请将目录改为 OptaPlanner Quickstarts 目录:

    cd optaplanner-quickstart
    Copy to Clipboard Toggle word wrap
  5. 检查 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.example</groupId>
     <artifactId>optaplanner-quickstart</artifactId>
     <version>1.0.0-SNAPSHOT</version>
     <properties>
      <compiler-plugin.version>3.8.1</compiler-plugin.version>
      <failsafe.useModulePath>false</failsafe.useModulePath>
      <maven.compiler.release>11</maven.compiler.release>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
      <quarkus.platform.group-id>com.redhat.quarkus.platform</quarkus.platform.group-id>
      <quarkus.platform.version>2.7.6.Final-redhat-00006</quarkus.platform.version>
      <surefire-plugin.version>3.0.0-M5</surefire-plugin.version>
     </properties>
    <dependencyManagement>
     <dependencies>
      <dependency>
       <groupId>${quarkus.platform.group-id}</groupId>
       <artifactId>${quarkus.platform.artifact-id}</artifactId>
       <version>${quarkus.platform.version}</version>
       <type>pom</type>
       <scope>import</scope>
      </dependency>
      <dependency>
       <groupId>io.quarkus.platform</groupId>
       <artifactId>quarkus-optaplanner-bom</artifactId>
       <version>2.7.6.Final</version>
       <type>pom</type>
       <scope>import</scope>
      </dependency>
     </dependencies>
    </dependencyManagement>
     <dependencies>
      <dependency>
       <groupId>org.optaplanner</groupId>
       <artifactId>optaplanner-quarkus</artifactId>
      </dependency>
      <dependency>
       <groupId>org.optaplanner</groupId>
       <artifactId>optaplanner-quarkus-jackson</artifactId>
      </dependency>
      <dependency>
       <groupId>io.quarkus</groupId>
       <artifactId>quarkus-resteasy-jackson</artifactId>
      </dependency>
      <dependency>
       <groupId>io.quarkus</groupId>
       <artifactId>quarkus-resteasy</artifactId>
      </dependency>
      <dependency>
       <groupId>io.quarkus</groupId>
       <artifactId>quarkus-arc</artifactId>
      </dependency>
      <dependency>
       <groupId>io.quarkus</groupId>
       <artifactId>quarkus-junit5</artifactId>
       <scope>test</scope>
      </dependency>
      <dependency>
       <groupId>io.rest-assured</groupId>
       <artifactId>rest-assured</artifactId>
       <scope>test</scope>
      </dependency>
     </dependencies>
     <repositories>
      <repository>
       <releases>
        <enabled>true</enabled>
       </releases>
       <snapshots>
        <enabled>false</enabled>
       </snapshots>
       <id>redhat</id>
       <url>https://maven.repository.redhat.com/ga</url>
      </repository>
     </repositories>
    <pluginRepositories>
     <pluginRepository>
      <releases>
       <enabled>true</enabled>
      </releases>
      <snapshots>
       <enabled>false</enabled>
      </snapshots>
      <id>redhat</id>
      <url>https://maven.repository.redhat.com/ga</url>
     </pluginRepository>
    </pluginRepositories>
    <build>
     <plugins>
      <plugin>
       <groupId>${quarkus.platform.group-id}</groupId>
       <artifactId>quarkus-maven-plugin</artifactId>
       <version>${quarkus.platform.version}</version>
       <extensions>true</extensions>
      <executions>
       <execution>
        <goals>
         <goal>build</goal>
         <goal>generate-code</goal>
         <goal>generate-code-tests</goal>
        </goals>
       </execution>
      </executions>
     </plugin>
     <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>${compiler-plugin.version}</version>
      <configuration>
       <compilerArgs>
        <arg>-parameters</arg>
       </compilerArgs>
      </configuration>
     </plugin>
     <plugin>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>${surefire-plugin.version}</version>
      <configuration>
       <systemPropertyVariables>
        <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
        <maven.home>${maven.home}</maven.home>
       </systemPropertyVariables>
      </configuration>
     </plugin>
     </plugins>
      </build>
       <profiles>
        <profile>
         <id>native</id>
        <activation>
         <property>
           <name>native</name>
         </property>
        </activation>
        <build>
         <plugins>
          <plugin>
           <artifactId>maven-failsafe-plugin</artifactId>
           <version>${surefire-plugin.version}</version>
           <executions>
            <execution>
             <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
             </goals>
             <configuration>
              <systemPropertyVariables>
               <native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
               <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
               <maven.home>${maven.home}</maven.home>
              </systemPropertyVariables>
             </configuration>
            </execution>
           </executions>
          </plugin>
         </plugins>
        </build>
       <properties>
        <quarkus.package.type>native</quarkus.package.type>
       </properties>
      </profile>
     </profiles>
    </project>
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat