Vert.x module-info.java 的注释处理器问题

问题描述 投票:0回答:1

我正在尝试用 Java 创建一个由多个模块组成的新项目(遵循 Java 9 上引入的 Java 模块概念)。在其中一个模块中,我尝试使用 vert.x codegen 生成一项将公开给其他模块的服务。

现在的问题是,当我尝试编译服务模块时,出现以下错误:

module-info.java:[5,22] 模块未找到:io.vertx.codegen。

为了供您参考,我将放置我的模块配置(如 module-info.java 中所述)和我的 POM 文件。

模块信息.java:

module mo.com.test.daomodule {
    requires io.vertx.core;
    requires io.vertx.client.sql.mssql;
    requires io.vertx.client.sql;
    requires io.vertx.codegen;
    requires io.vertx.serviceproxy;
    requires org.apache.logging.log4j.core;
    requires org.apache.logging.log4j;
    
    exports mo.com.test.dao.db.service;
    exports mo.com.test.dao.db; 
}

我的pom:

<?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>mo.com.test</groupId>
        <artifactId>MainProject</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    
     <properties>
         <vertx.version>4.2.1</vertx.version>
         <jdbc.version>9.4.0.jre11</jdbc.version>
         <log4j2api.version>2.14.1</log4j2api.version>
         <log4j2core.version>2.14.1</log4j2core.version>
     </properties>
    
    <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>io.vertx</groupId>
            <artifactId>vertx-stack-depchain</artifactId>
            <version>${vertx.version}</version>
            <type>pom</type>
            <scope>import</scope>
          </dependency>
        </dependencies>
    </dependencyManagement>
    
    <dependencies>
        
        <dependency>
            <groupId>io.vertx</groupId>
            <artifactId>vertx-core</artifactId>
        </dependency>
        <dependency>
            <groupId>io.vertx</groupId>
            <artifactId>vertx-json-schema</artifactId>
        </dependency>
        <dependency>
            <groupId>io.vertx</groupId>
            <artifactId>vertx-jdbc-client</artifactId>
        </dependency>
        <dependency>
            <groupId>io.vertx</groupId>
            <artifactId>vertx-mssql-client</artifactId>
        </dependency>
        <dependency>
            <groupId>io.vertx</groupId>
            <artifactId>vertx-codegen</artifactId>  
            <version>${vertx.version}</version>
            <classifier>processor</classifier>
        </dependency>
        <dependency>
            <groupId>io.vertx</groupId>
            <artifactId>vertx-service-proxy</artifactId>
            <version>${vertx.version}</version>
        </dependency>
        
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
            <version>${jdbc.version}</version>
            <type>jar</type>
        </dependency>
        
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>${log4j2api.version}</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>${log4j2core.version}</version>
            <type>jar</type>
        </dependency>
    
    </dependencies>
    
    <groupId>mo.com.test</groupId>
    <artifactId>daomodule</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>
    <name>daomodule</name>
</project>

通过上面的检查,我已在 POM 文件中添加了必要的导入,并根据 module-info.java 中的需要添加了 vert.x 模块。

不,我的问题是,我能做些什么来解决这个编译问题?我的 POM 或 module-info.java 是否缺少任何内容?

maven netbeans vert.x module-info annotation-processor
1个回答
0
投票

如果您仅在运行时使用生成的代码,并且生成的代码不依赖于 codegen jar 文件中的代码,那么我认为您不需要在 module-info.java 文件中使用

requires io.vertx.codegen;

如果您在运行时确实需要这个,那么我认为

<scope>processor</scope>
是问题的一部分。我相信您需要删除该范围,以便 jar 文件在编译阶段之后可用。我实际上找不到有关该范围值的任何文档,因此我假设它是有效的。

此外,在 Maven 中配置注释处理器的方式需要配置编译器插件。请参阅此处的答案:https://stackoverflow.com/a/41777832/359035

© www.soinside.com 2019 - 2024. All rights reserved.