簡體   English   中英

在開發模式下使用 Quarkus 的 Maven 多模塊項目

[英]Maven multi module project with Quarkus in dev mode

我是 Quarkus 的新手,並嘗試在 Maven 多模塊項目中使用它。 我的項目結構如下:

- quarkustest (pom)
  - quarkustest-application (jar)
  - quarkustest-backend (pom)
    - quarkustest-backend-rest-api (jar)
  - quarkustest-dependencies (pom)
  - quarkustest-parent (pom)

應用程序模塊使用 build-goal 執行 quarkus-maven-plugin。 quarkustest-backend-rest-api包含一個簡單的 REST 控制器,因此也在/src/main/resources/META-INF包含一個beans.xml rest-api-module 是應用程序模塊的引用。

如果我使用mvn package整個項目,則生成的 runner-jar 會按預期工作。 但是,如果我嘗試使用mvn compile quarkus:dev在開發模式下啟動項目, mvn compile quarkus:dev以下異常:

錯誤] 無法在項目 quarkustest-application 上執行目標 io.quarkus:quarkus-maven-plugin:1.0.0.CR2:dev (default-cli):無法運行:無法解析 Quarkus 應用程序模型:無法解析依賴關系test.quarkustest:quarkustest-application:jar:1.0.0-SNAPSHOT: 找不到工件 test.quarkustest:quarkustest-backend-rest-api:jar:1.0.0-SNAPSHOT -> [幫助 1]

我不太確定如何解決這個問題。 Quarkus 的多模塊項目是否有任何最佳實踐? 我在這里做的任何明顯錯誤?

編輯1(相關pom文件)

quarkustest-應用程序

<parent>
    <groupId>test.quarkustest</groupId>
    <artifactId>quarkustest-parent</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <relativePath>../quarkustest-parent</relativePath>
</parent>

<artifactId>quarkustest-application</artifactId>

<dependencies>
    <dependency>
        <groupId>test.quarkustest</groupId>
        <artifactId>quarkustest-backend-rest-api</artifactId>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-maven-plugin</artifactId>
            <version>${quarkus-plugin.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>build</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

誇克測試父

<parent>
    <groupId>test.quarkustest</groupId>
    <artifactId>quarkustest-dependencies</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <relativePath>../quarkustest-dependencies</relativePath>
</parent>

<artifactId>quarkustest-parent</artifactId>
<packaging>pom</packaging>

誇克測試依賴

<groupId>test.quarkustest</groupId>
<artifactId>quarkustest-dependencies</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>

<properties>
    ...
</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>test.quarkustest</groupId>
            <artifactId>quarkustest-backend-rest-api</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<build>
    <plugins>
        <plugin>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-maven-plugin</artifactId>
            <version>${quarkus-plugin.version}</version>
        </plugin>
    </plugins>
</build>

quarkustest(聚合器)

<parent>
    <groupId>test.quarkustest</groupId>
    <artifactId>quarkustest-parent</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <relativePath>quarkustest-parent</relativePath>
</parent>

<artifactId>quarkustest</artifactId>
<packaging>pom</packaging>

<modules>
    <module>quarkustest-dependencies</module>
    <module>quarkustest-parent</module>
    <module>quarkustest-backend</module>
    <module>quarkustest-application</module>
</modules>

如果您從未運行過mvn install可能是因為當您在子項目中時,maven 不會查看其兄弟項目來解析依賴項,它只會查看不包含依賴項的本地 maven 存儲庫。 如果你運行了mvn install它可能是其他東西在起作用。

將 quarkus-maven-plugin 保留在 quarkustest-application 中並運行

  1. mvn 全新安裝
  2. mvn quarkus:dev -pl quarkustest-application

現在它將獲取所有子模塊中的更改。

我能夠通過以下方式在開發中成功運行 quarkus 子模塊(依賴於其他模塊):

  1. 安裝“Quarkus Run Configs”插件
  2. 為 Quarkus 定義新的運行配置 -> 在 VM 選項中提供額外的 maven 參數:

-Dmaven.am -Dmaven.pl=<name-of-you-quarkus-module>

  1. 在父 pom 中定義 quarkus 插件:

     <plugin> <groupId>io.quarkus</groupId> <artifactId>quarkus-maven-plugin</artifactId> <version>${quarkus-plugin.version}</version> </plugin>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM