欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > Java 9模块与Maven的深度结合

Java 9模块与Maven的深度结合

2025/4/28 3:37:43 来源:https://blog.csdn.net/2501_90323865/article/details/145917559  浏览:    关键词:Java 9模块与Maven的深度结合

在Java 9引入模块化之后,如何将模块化与Maven项目结合成为了许多开发者关注的焦点。本文将通过一个简单的示例,展示如何在Maven项目中开发Java 9模块,并使用非模块化的外部库(如Jsoup)。

1. Maven项目配置

首先,我们需要创建一个Maven项目,并在pom.xml中配置相关的依赖和插件。以下是完整的pom.xml文件内容:

<project .....>  <modelVersion>4.0.0</modelVersion>  <groupId>com.logicbig.example</groupId>  <artifactId>java9-module-and-apache-maven</artifactId>  <version>1.0-SNAPSHOT</version>  <dependencies>  <dependency>  <groupId>org.jsoup</groupId>  <artifactId>jsoup</artifactId>  <version>1.11.3</version>  </dependency>  </dependencies>  <build>  <plugins>  <plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-compiler-plugin</artifactId>  <version>3.8.0</version>  <configuration>  <source>10</source>  <target>10</target>  <encoding>UTF-8</encoding>  </configuration>  </plugin>  </plugins>  </build>  
</project>

在这个配置中,我们指定了项目的基本信息,添加了Jsoup作为依赖,并配置了maven-compiler-plugin以支持Java 10的编译。

2. 创建模块描述文件

Java 9模块需要一个module-info.java文件来声明模块的依赖关系。以下是module-info.java的内容:

module example.module {requires org.jsoup;
}

这个文件声明了当前模块依赖于org.jsoup模块。需要注意的是,Jsoup本身并不是一个模块化的库,因此我们需要将其作为自动模块使用。

3. 自动模块的处理

由于Jsoup不是模块化的库,我们需要通过jar --describe-module命令来查找其自动模块名称。在Jsoup的JAR文件中,MANIFEST.MF文件声明了Automatic-Module-Name: org.jsoup。这意味着我们可以将Jsoup作为自动模块org.jsoup来使用。

4. 主类的实现

接下来,我们编写一个简单的主类ExampleMain,用于演示如何使用Jsoup解析HTML内容。以下是ExampleMain.java的代码:

package com.logicbig.example;import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;public class ExampleMain {public static void main(String[] args) {Document d = Jsoup.parse("<a href='http://www.example.com'>Example</a>");String s = d.getElementsByTag("a").first().attr("href");System.out.println(s);}
}

在这个主类中,我们使用Jsoup解析了一个简单的HTML字符串,并提取了<a>标签的href属性。

5. 运行项目

使用Maven运行

我们可以通过Maven的exec:java插件来运行项目。在项目根目录下执行以下命令:

mvn -q clean compile exec:java -Dexec.mainClass="com.logicbig.example.ExampleMain"

如果一切正常,程序将输出http://www.example.com

使用Java命令运行

我们也可以通过Java命令直接运行模块化项目。在目标目录下执行以下命令:

java --module-path classes;C:\Users\Joe\.m2\repository\org\jsoup\jsoup\1.11.3 --module example.module/com.logicbig.example.ExampleMain

同样,程序将输出http://www.example.com

6. 常见问题及解决方法

如果在运行过程中遇到编译错误,例如package org.jsoup does not exist,可能是因为模块声明文件module-info.java中缺少requires语句。确保module-info.java正确声明了依赖的模块。

此外,如果Maven编译失败并抛出MojoFailureException,通常是由于依赖问题或代码错误导致的。可以通过查看Maven的错误日志来定位问题。

7. 总结

通过本文的示例,我们展示了如何在Maven项目中开发Java 9模块,并使用非模块化的外部库。通过合理配置pom.xmlmodule-info.java,我们可以轻松地将Java 9模块化特性与Maven项目结合,同时利用现有的非模块化库。希望本文能为正在探索Java 9模块化的开发者提供一些帮助。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词