问题描述:
有一个java maven web项目,需要引入一个第三方包gdal.jar,但是这个包是自己打包的,在maven中央库里面找不到该包,因此我采用传统的方式,将这个包拷贝到:项目名称\src\main\webapp\WEB-INF\lib的目录下,然后通过config build path将该gdal.jar包引入到项目工程中。对于传统java web项目,这么做当然没有问题,但是对于maven项目,项目打包(mvn install)时就会报错,在项目调试时(debug on server)也会出现文件发布不全的问题:tomcat的webapp目录下有该项目,但是里面文件不全,通过web访问时就会404错误。
问题解决:
maven项目的jar包都是通过maven机制进行管理的,自己通过build path将jar引进去,写代码时没问题,但是调试或者发布就会出现问题,解决办法就是将该包也是利用maven的方式引入项目中,解决方式有两种:
将gdal.jar包上传到公司的maven私服上,然后配置路径
如果没有maven私服,可以直接通过文件方式引入该jar包,在pom.xml中添加该jar包的引用
<dependency> <groupId>gdal</groupId> <artifactId>gdal</artifactId> <version>1.0.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/gdal.jar</systemPath> </dependency>
其中project.basedir为maven内置属性,共有6类属性:
内置属性(Maven预定义,用户可以直接使用)
${basedir}表示项目根目录,即包含pom.xml文件的目录;
${version}表示项目版本;
${project.basedir}同${basedir};
${project.baseUri}表示项目文件地址;
${maven.build.timestamp}表示项目构件开始时间;
${maven.build.timestamp.format}表示属性${maven.build.timestamp}的展示格式,默认值为yyyyMMdd-HHmm,可自定义其格式,其类型可参考java.text.SimpleDateFormat。
另外两种方式
方式1:编译阶段指定外部lib
<plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> <compilerArguments> <extdirs>lib</extdirs><!--指定外部lib--> </compilerArguments> </configuration> </plugin>
方式2:将外部jar打入本地maven仓库
cmd 进入jar包所在路径,执行以下命令
mvn install:install-file -Dfile=cloud.jar -DgroupId=com.hope.cloud -DartifactId=cloud -Dversion=1.0 -Dpackaging=jar
引入依赖
<dependency> <groupId>com.hope.cloud</groupId> <artifactId>cloud</artifactId> <version>1.0</version> </dependency>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
我在我的项目中使用了maven shade插件将所有依赖项jar类重新定位到一个包下,例如org.shade.* 当我试图在其他应用程序中使用带阴影的jar作为maven依赖项时,它会拉出依赖项jar的。 我的期望是,当Uber/shaded jar包含为maven依赖项时,它不应该拉出任何其他依赖类jar,因为这些类已经在shaded jar中重新打包了。
当我右键单击Maven项目并选择AddDependency选项,然后在查询中键入外部jar的名称时,找不到它。如何将外部jar添加到Maven项目中?
我正在使用IntelliJ 2016,我成功添加了一些Maven依赖项(用于ImageJ插件开发),这两个外部库以jar文件的形式显示。我已经在项目结构中添加了它们- 其中一个正在成功导入,而另一个没有。有效的在jar的子文件夹中 导入fiji.threshold.Auto_Local_Threshold 另一个就在罐子下面,当我尝试时,名字无法识别: 导入MultipleKymograph_ 我
我有一个基于maven的项目,在那里我必须调用一个外部jar(比如country.jar) 我在src/lib文件夹中添加了这个jar,并在pom.xml中进行了以下设置
本文向大家介绍Android Studio 在项目中引用第三方jar包的方法,包括了Android Studio 在项目中引用第三方jar包的方法的使用技巧和注意事项,需要的朋友参考一下 在Android Studio项目中引用第三方jar包的方法: 步骤: 1、在build.gradle文件中添加如下代码: 备注:要添加在Android作用域下 点击【Sync Now】,会生成jniLibs文件
本文向大家介绍IDEA引MAVEN项目jar包依赖导入问题解决方法,包括了IDEA引MAVEN项目jar包依赖导入问题解决方法的使用技巧和注意事项,需要的朋友参考一下 IDEA内置了Maven环境,默认采用Maven解决项目依赖问题。在新建项目后,项目的路径中会生成pom.xml文件和项目名.iml文件。新建项目后,IDEA不会自动刷新Maven的依赖。以Spring Application为例,