在Maven项目中使用本地JAR包有两种方法

简介:

1. 使用system scope

  <dependencies>

    <dependency>

     <groupId>org.richard</groupId>

     <artifactId>my-jar</artifactId>

      <version>1.0</version>

      <scope>system</scope>

      <systemPath>${project.basedir}/lib/my-jar.jar</systemPath>

    </dependency>

  </dependencies>

system scope引入的包,在使用jar-with-dependencies打包时将不会被包含,可以使用resources将本地包打进jar-with-dependencies

<build>

    <plugins>

      <plugin>

       <groupId>org.apache.maven.plugins</groupId>

       <artifactId>maven-shade-plugin</artifactId>

        <executions>

          <execution>

            <id>make-assembly</id>

            <phase>package</phase>

            <goals>

              <goal>shade</goal>

            </goals>

            <configuration>

              <descriptorRefs>

               <descriptorRef>jar-with-dependencies</descriptorRef>

              </descriptorRefs>

             <finalName>xxx-jar-with-dependencies</finalName>

            </configuration>

          </execution>

        </executions>

      </plugin>

    </plugins>

     <resources>

      <resource>

       <targetPath>lib/</targetPath>

        <directory>lib/</directory>

        <includes>

         <include>**/my-jar.jar</include>

        </includes>

      </resource>

    </resources>

  </build>

生成的xxx-jar-with-dependencies.jar中,将会包含lib目录以及my-jar.jar,并且能够被在执行的时候被找到。

有的时候这种方法会实效,比如JDBCDriver在声明的时候Class.forName("xxx.Driver")就会说找不到类,用下面两种方法就可以。

2. jar包安装到本地repository

mvninstall:install-file -Dfile=my-jar.jar -DgroupId=org.richard-DartifactId=my-jar -Dversion=1.0 -Dpackaging=jar

 3. 添加 in project repository,在新机器上执行时就不用运行mvninstall:install-file命令了

<repository>

    <id>in-project</id>

    <name>In Project Repo</name>

   <url>file://${project.basedir}/lib</url>

</repository>

 

<dependency>

    <groupId>org.richard</groupId>

    <artifactId>my-jar</artifactId>

    <version>1.0</version>

</dependency>

你的jar包及路径必须严格遵循格式:

/groupId/artifactId/version/artifactId-verion.jar

本例中: lib/org/richard/my-jar/1.0/my-jar-1.0.jar

 

怎么把本地的jar包弄到maven里去

假设将包htmlparser.jar放入了项目下的lib目录中 -> ${project}/lib/htmlparser.jar

则pom.xml中应该配置如下:

<dependency>

    <groupId>com.htmlparser</groupId>

    <artifactId>htmlparser</artifactId>

    <version>2.0</version>

    <scope>system</scope>

    <systemPath>${project.basedir}/lib/htmlparser.jar</systemPath>

</dependency>

路径不完整要从项目根目录的下级目录开始好比我这边是这样的:

<dependency>
            <groupId>javabuilder</groupId>
            <artifactId>javabuilder</artifactId>
            <version>1.0</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/javabuilder.jar</systemPath>
</dependency>










本文转自 yntmdr 51CTO博客,原文链接:http://blog.51cto.com/yntmdr/1716495,如需转载请自行联系原作者
目录
相关文章
|
10月前
|
Java jenkins 应用服务中间件
结合Jenkins与Tomcat,实施Maven项目的自动构建和部署流程。
任何项目构建和部署的自动化流程,总离不开对各个环节精细把控与密切配合。涉及到源代码管理、构建工具、持续集成服务器以及最终的运行时环境的协调。通过上述简洁实用的步骤,可以实现Maven项目从源代码到运行状态的无缝过渡,进而提升软件开发的效率与质量。
531 0
|
Java Maven 开发者
maven项目中官方setting.xml文件
`settings.xml` 是 Maven 的配置文件,用于定义用户或全局级别的构建行为。它包含本地仓库路径、网络代理、服务器认证、仓库镜像及构建配置文件等设置,帮助开发者根据环境定制 Maven 行为,提升构建效率与灵活性。
1667 0
|
11月前
|
Java 区块链 Maven
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
797 3
|
Java 测试技术 项目管理
【JavaEE】从 0 到 1 掌握 Maven 构建 Java 项目核心技巧 解锁 Java 项目高效管理实用实例
本文从Maven基础概念讲起,涵盖安装配置、核心概念(如POM与依赖管理)及优化技巧。结合Java Web项目实例,演示如何用Maven构建和管理项目,解决常见问题,助你高效掌握这一强大工具,提升Java开发与项目管理能力。适合初学者及进阶开发者学习。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
453 6
|
存储 Java Maven
Maven系统级别依赖:解决部署时Jar包缺失问题
以上就是关于Maven系统级别依赖解决部署时Jar包缺失问题的解答,希望对你有所帮助。在软件开发中,遇到问题并解决问题是常态,希望你能够善用这些工具,解决你遇到的问题。
820 28
|
Java Maven
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
在Java项目中,启动jar包时遇到“no main manifest attribute”错误,且打包大小明显偏小。常见原因包括:1) Maven配置中跳过主程序打包;2) 缺少Manifest文件或Main-Class属性。解决方案如下:
3301 8
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
966 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
2847 3
|
弹性计算 Java Serverless
Serverless 应用引擎操作报错合集之上传自定义JAR包,启动时报错,是什么导致的
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
Java 应用服务中间件
tomcat7 与 tomcat8 加载 jar包的顺序
tomcat7 与 tomcat8 加载 jar包的顺序
670 0

推荐镜像

更多