Java 引入依赖的方式总结

1. Maven 依赖管理:

a) 在项目根目录创建 pom.xml 文件(如果不存在)

b) 在 pom.xml 的 标签内添加依赖:

xml 复制代码
     <dependencies>
         <dependency>
             <groupId>org.example</groupId>
             <artifactId>example-library</artifactId>
             <version>1.0.0</version>
         </dependency>
     </dependencies>

c) 运行 mvn install 下载依赖

2. Gradle 依赖管理:

a) 在项目根目录创建 build.gradle 文件(如果不存在)

b) 在 build.gradle 文件中添加依赖:

gradle 复制代码
   dependencies {
       implementation 'org.example:example-library:1.0.0'
   }

c) 运行 gradle build 下载依赖

3. 手动添加 JAR 文件:

a) 创建 lib 目录(如果不存在)

b) 将 JAR 文件复制到 lib 目录

c) 在 IDE 中(以 IntelliJ IDEA 为例):

  • 右键点击项目 -> Open Module Settings

  • 选择 Libraries -> + -> Java

  • 选择 JAR 文件 -> Apply -> OK

4. 模块依赖(Java 9+):

a) 在 src 目录下创建 module-info.java 文件

b) 在文件中声明依赖:

java 复制代码
     module com.myapp {
         requires org.example.library;
     }

c) 确保依赖的 JAR 在模块路径上

5. 类路径(Classpath):

a) 将依赖的 JAR 文件放在已知位置

b) 运行 Java 程序时指定类路径:

复制代码
     java -cp .:path/to/your/jar:path/to/dependency.jar YourMainClass

6. 系统范围依赖(不推荐):

a) 在 pom.xml 文件中添加系统范围依赖:

xml 复制代码
   <dependency>
       <groupId>com.example</groupId>
       <artifactId>example-jar</artifactId>
       <version>1.0</version>
       <scope>system</scope>
       <systemPath>${project.basedir}/lib/example.jar</systemPath>
   </dependency>

b) 确保 JAR 文件在指定路径存在

7. 动态加载:

a) 在代码中使用 URLClassLoader 动态加载类:

java 复制代码
    try {
        URLClassLoader classLoader = new URLClassLoader(new URL[]{new File("path/to/your.jar").toURI().toURL()});
        Class<?> loadedClass = classLoader.loadClass("com.example.YourClass");
        // 使用 loadedClass...
    } catch (Exception e) {
        e.printStackTrace();
    }

8. OSGi 框架:

a) 设置 OSGi 环境(如使用 Eclipse Equinox)

b) 将依赖打包为 OSGi bundle

c) 在 bundle 的 MANIFEST.MF 文件中声明依赖:

复制代码
    Import-Package: org.example.library

d) 在 OSGi 运行时部署和启动 bundle

9. 自定义类加载器:

复制代码
a) 创建自定义 ClassLoader 类:
java 复制代码
    public class CustomClassLoader extends ClassLoader {
        @Override
        protected Class<?> findClass(String name) throws ClassNotFoundException {
            // 实现类加载逻辑
        }
    }
复制代码
b) 使用自定义 ClassLoader 加载类:
java 复制代码
     CustomClassLoader loader = new CustomClassLoader();
     Class<?> clazz = loader.loadClass("com.example.YourClass");

10. 依赖注入框架(以 Spring 为例):

复制代码
a) 添加 Spring 依赖到项目
b) 创建配置类或 XML 配置
c) 使用注解或配置声明依赖:
java 复制代码
     @Configuration
     public class AppConfig {
         @Bean
         public MyDependency myDependency() {
             return new MyDependency();
         }
     }
复制代码
d) 在需要的地方注入依赖:
java 复制代码
     @Autowired
     private MyDependency myDependency;

12. 构建工具插件:

复制代码
a) 在 Maven 的 pom.xml 或 Gradle 的 build.gradle 中配置插件
b) 使用插件提供的任务或目标来管理依赖

13. 多模块项目:

复制代码
a) 在父 pom.xml 中定义模块:
xml 复制代码
     <modules>
         <module>module1</module>
         <module>module2</module>
     </modules>
复制代码
b) 在子模块的 pom.xml 中声明对其他模块的依赖:
xml 复制代码
      <dependency>
          <groupId>${project.groupId}</groupId>
          <artifactId>module1</artifactId>
          <version>${project.version}</version>
      </dependency>
相关推荐
学长毕设2 小时前
基于springboot的社区养老监护系统的设计与实现
java·spring boot·后端
会编程的吕洞宾2 小时前
RAG检索质量怎么评估?3个指标+LLM裁判实战
java·开发语言·人工智能·后端
卢总霸气2 小时前
上海交大机动学院学位论文参考文献Zotero CSL 样式-2026
java
FLJwu2 小时前
运动相机采购实战|第四篇(终章):一张清单走完选型全流程,把风险拦在源头
c语言·开发语言·数码相机·运动相机·oem 量产
收纳过往2 小时前
数据库加索引的时机:慢查询日志说话
android·开发语言·数据库·python·低代码·rxjava
段一凡-华北理工大学2 小时前
高炉能源系统智能化:热风炉、煤气与极致能效~系列文章07:高炉煤气:产生规律与全厂用户平衡
java·前端·能源
咖啡八杯2 小时前
Redis 工具封装:RedisCache 对 Operations 体系的二次封装
java·数据库·redis·缓存·框架·springboot·若依
wno7042 小时前
Springboot国际化信息(i18n)解析
java·spring boot·后端
eleven_4u2 小时前
QPS如何计算,如何部署架构
java·linux·运维·jvm·中间件
牧瀬クリスだ2 小时前
Redis Hash实战:高效存储对象与购物车
java·数据库·redis·算法·哈希算法