maven - Maven 模块和 quarkus 编译/实时重新加载
问题描述
我的项目(称为 tesa)由两个模块组成:tesa-app 和 tesa-domain
+ tesa (pom.xml)
+----tesa-modules (pom.xml)
+-------tesa-app (pom.xml)
+-------tesa-domain (pom.xml)
问题是,每当我对tesa-domain
模块进行更改而不是运行./mvnw -f modules/tesa-app/pom.xml compile quarkus:dev
以启动我的 quarkus 应用程序时,域中的更改都不会被考虑在内。
因此,每次我对域进行更改时,我都需要运行 `mvn clean install. 这太烦人了。更何况,实时重新加载也无法正常工作。
知道如何解决这个问题吗?
最外层的 pom.xml
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.liv.services.doom</groupId>
<artifactId>tesa</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<parent>
<groupId>org.liv.services.core</groupId>
<artifactId>quarkus-config</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../core/quarkus-config/pom.xml</relativePath>
</parent>
<modules>
<module>modules</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.liv.services.doom</groupId>
<artifactId>tesa-domain</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.liv.services.doom</groupId>
<artifactId>tesa-app</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
模块 pom.xml
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<artifactId>tesa-modules</artifactId>
<packaging>pom</packaging>
<parent>
<groupId>org.liv.services.doom</groupId>
<artifactId>tesa</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modules>
<module>tesa-app</module>
<module>tesa-domain</module>
</modules>
<dependencies>
<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>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
</dependency>
<dependency>
<groupId>io.mockk</groupId>
<artifactId>mockk</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
应用程序 pom.xml :
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.liv.services.doom</groupId>
<artifactId>tesa-app</artifactId>
<parent>
<groupId>org.liv.services.doom</groupId>
<artifactId>tesa-modules</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-core</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-kotlin</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy</artifactId>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-reactive-messaging-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.liv.services.doom</groupId>
<artifactId>solver-domain</artifactId>
</dependency>
</dependencies>
</project>
域 pom.xml
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.liv.services.doom</groupId>
<artifactId>tesa-domain</artifactId>
<parent>
<groupId>org.liv.services.doom</groupId>
<artifactId>tesa-modules</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
</project>
解决方案
有趣的。-f
这可能与将 Maven 反应器限制为指定模块的事实有关。但是,Quarkus 引导程序正在执行自己的工作区发现,它将找到您的模块,并且一旦启动开发模式,对这些模块的更改将被拾取。因此,似乎只有初始启动没有将源正确同步到依赖模块中的类。我想你可以为它打开一个问题。
但是,假设只有app
模块包含,您可以简单地从根项目目录中quarkus-maven-plugin
删除-f
并执行,这应该可以工作。quarkus:dev
推荐阅读
- python - Python:在init中运行类的静态方法?
- html - css div背景图像出现在顶部菜单之前
- python - 基于@timestamp 组合/合并来自不同弹性搜索索引的数据
- sql - 以日期为参数的函数 - Oracle 11g
- android - 通过 AlarmManager 和 BroadcastReceiver 发送通知不起作用?
- git - 不同的 git commit origin master 和我的服务器
- php - Laravel 中的不同值
- unreal-engine4 - 为什么 UPROPERTY 说明符 Visible*/Edit* 与 BlueprintRead* 一起使用
- python - Python:接受连接到列表中,并让用户选择要写入的特定套接字?
- android - 如何取消firebase StorageTask?