目录
把不在中央仓库(或者是自定义)的jar加入到项目中作为依赖(idea版)
把不在中央仓库(或者是自定义)的jar加入到项目中作为依赖(idea版)
最近在使用kettle进行二次开发的时候,里面有很多依赖都已经不在maven的中央仓库了,而且也不再公司的私服,,所以在进行项目打包的时候一直报错:
但是通过依赖又可以下载到本地仓库中,但是打包的时候就是报这个错,所以打算手动的引入这个依赖。
官网的依赖:可以把这个依赖下载到本地,但是打包的时候依赖解析不了或者是在报错在仓库中找不到;
<dependency>
<groupId>pentaho</groupId>
<artifactId>pentaho-s3-vfs</artifactId>
<version>7.1.0.12-132</version>
</dependency>
先下载这个jar的依赖(网络上一般都是有资源的),这里我没有使用maven的命令安装模式,而是通过lib依赖于pom配置来完成的:
1、在项目的pom.xml文件中引入该jar包依赖
<dependency>
<groupId>pentaho</groupId> <!-- 可以自定义 -->
<artifactId>pentaho-s3-vfs</artifactId> <!-- jar名称 -->
<version>7.1.0.12-132</version> <!-- 与jar包中定义的版本一致,如果其没有指定,那么这里可以自定义-->
<type>jar</type>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib-s3/pentaho-s3-vfs-7.1.0.12-132.jar</systemPath> <!-- 使用jar所在的绝对路径 -->
</dependency>
2、在idea创建lib-s3文件作为依赖(与上面的路径保持一致)
先在resource目录创建lib-s3文件夹:
注意是在src的resource目录下创建:这里我是命名为lib-s3:然后把相关的jar包复制到这个lib-s3文件:
然后在idea中设置引入依赖:
注意:如果没有add as library这个选项,那说明你这个maven模块中的resource目录下的文件可能是被默认为依赖,你可以把依赖包直接放到你创建的文件夹就行。然后看看可不可以被引用。
刷新pom文件,成功后这个jar包是可以展开的:
然后使用maven打包测试一下,发现确实是可以使用了。
把外部/自定义的jar依赖一起打包进jar包
最近在学习对kettle进行二次开发,在使用自己定义的代码中的类的时候,可能需要使用到一些其他外部的jar,但是单纯使用maven来进行打包,是不能把对应的jar打包进项目中的,所以部署jar的时候就会出现依赖的class文件不存在的错误,所以需要把外部的jar一起打包进入jar包:
把外部依赖一起打包到jar包中:
修改pom文件:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<finalName>xxx-xxx-sdk</finalName>
<descriptorRefs>
<!-- 将依赖的jar包中的class文件打进生成的jar包-->
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<!-- 可以增加main函数入口,可有可无-->
<mainClass>com.xxx.xxx.xxx</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
配置完成后,再执行:
参考博客:maven 打包将依赖打进jar包_xzyxcy的博客-CSDN博客_maven打包的时候将依赖的jar包也打进去