-
2019-07-02 10:48:10
最近在开发中用到了maven的scope属性,可以精简最后项目的包大小,排除一些运行时不需要的包,同时,通过systempath还可以引入一些repository库中没有的依赖包。下面简单介绍一下:
scope maven中scope的默认值是compile scope的分类 1)compile 默认是compile。compile表示被依赖项目需要参与当前项目的编译,包括后续的测试,运行周 期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。 2)test 表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行,比较典型的如junit。 3)runtime 表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。oracle jdbc驱 动jar包就是一个很好的例子,一般scope为runtime。 另runtime的依赖通常和optional搭配使用, optional为true,即可以用A实现也可以用B实现。 4)procided 意味着打包的时候可以不用包进去,别的设施(web container)会提供。事实上该依赖理论 上可以参与编译、测试、运行等周期。相当于compile,但是打包阶段做了exclude的动作。 5)system 和provide相同,不过被依赖项不会从maven仓库抓,而是从本地系统文件拿,一定要配合 systemPath使用 当maven依赖本地而非repository中的jar包,sytemPath指明本地jar包路径
<dependency> <groupId>qqwebnew.sgip-util-1.3</groupId> <artifactId>sgip-util-1.3</artifactId> <version>1.3</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/lib/sgip-util-1.3.jar</systemPath> </dependency>
更多相关内容 -
通过Maven的systemPath方式加载外部jar包
2022-02-11 17:28:57通过Maven的systemPath方式加载外部jar包在开发工程中,有些jar是自己开发的,比如:封装的工具类,在其他项目想要引入时就需要
maven坐标
,如果引入maven坐标
则每个开发者都需要有源码然后通过mvn安装到本地才能产生maven坐标
;或者导入到lib文件夹
下再使用IDEA进行构建。这些方式都比较麻烦需要开发者进行额外的操作。所以通过Maven的systemPath方式加载外部jar包的方式进行很好的解决该问题比如我有一个叫做
common-util
的工程,该工程源码的<groupId>
为com.test.common
,<version>
为1.0
,如下:<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> ...... <groupId>com.test.common</groupId> <artifactId>common-util</artifactId> <version>1.0</version> <name>common-util</name> ...... </project>
步骤:
1、进入common-util
工程,通过mvn命令进行package
打包
2、将打包后的common-util-1.0.jar
拷贝到其他需要的resources
下的lib
文件夹中
3、pom引入common-util-1.0.jar
包,代码如下:<dependency> <!--common-util包源码的groupId地址--> <groupId>com.test.common</groupId> <artifactId>common-util</artifactId> <!--common-util包源码的version--> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/resources/lib/common-util-1.0.jar</systemPath> </dependency>
-
maven systemPath方式加载和打包
2020-08-12 18:25:16scope:使用system systemPath:本地jar文件你放在系统文件的目录,${project.basedir}表示项目根目录,直接这样写就行,lib/deep-analysis-1.0.jar是自己开发的jar。 把deep-analysis-1.0.jar打包时,打进项目或...在开发工程中,有些jar是自己开发的,当被引用到其他工程或项目中时,需要把自己开发的jar添加到其他工程中。在此记录以下,使用IntelliJ IDEA 2019.2.3和apache-maven-3.3.9实现加载jar和使用maven打包时,把自己开发的jar打进去:
在pom.xml文件中配置如下:
在依赖中添加:
<dependency> <groupId>com.scopa.graph</groupId> <artifactId>deep-analysis</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/lib/deep-analysis-1.0.jar</systemPath> </dependency>
解释:
groupId:此名称可自定义,com.scopa.graph是我自定义的名称;
artifactId:此名称可自定义,deep-analysis是我自定义的名称,不过这个最好与加载的jar(deep-analysis-1.0.jar)名称保持一致,我要加载的jar名称为deep-analysis-1.0.jar,artifactId名称通常不加版本号,artifactId名称与加载的jar名称保持以下,因此artifactId的名称可定义为deep-analysis
version:此为加载的jar版本号,最好与加载的jar保持一致,加载的jar名称为deep-analysis-1.0.jar,版本号为后面的数字。这个可修改,但是version不能丢失。
scope:使用system
systemPath:本地jar文件你放在系统文件的目录,${project.basedir}表示项目根目录,直接这样写就行,lib/deep-analysis-1.0.jar是自己开发的jar。
把deep-analysis-1.0.jar打包时,打进项目或工程中:
<resources> <resource> <!--把src/main/java目录下的properties、xm文件打包打进程序中--> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <!--把src/main/resources目录下的properties、xm文件打包打进程序中--> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <!--把lib/目录下第三方jar包打进程序中,如上面的systemPath目录下的jar--> <directory>lib/</directory> <includes> <include>**/*.jar</include> </includes> <filtering>false</filtering> </resource> </resources>
这样,使用命令:
mvn clean
mvn package -D skipTests 命令即可
-
gradle错误 dependency.systemPath‘ for com.alibaba:jconsole:jar must specify an absolute path
2021-04-25 19:06:542/files-2.1/com.alibaba/druid/1.0.29/58f862c09528a1181939e695c4a3f161630faa10/druid-1.0.29.pom: 'dependencies.dependency.systemPath' for com.alibaba:jconsole:jar must specify an absolute path but is...gradle错误
问题
> Task :compileJava UP-TO-DATE
Errors occurred while build effective model from /home/shijianfeng/.gradle/caches/modules-2/files-2.1/com.alibaba/druid/1.0.29/58f862c09528a1181939e695c4a3f161630faa10/druid-1.0.29.pom:
'dependencies.dependency.systemPath' for com.alibaba:jconsole:jar must specify an absolute path but is ${env.JAVA_HOME}/lib/jconsole.jar in com.alibaba:druid:1.0.29
'dependencies.dependency.systemPath' for com.alibaba:tools:jar must specify an absolute path but is ${env.JAVA_HOME}/lib/tools.jar in com.alibaba:druid:1.0.29解决方法
阿里官方仓库回复说编译有问题,运行没问题,1年多没解决。
阿里的大牛没闲功夫解决这种小问题,无奈...
只能自己动手,既然运行没问题,那去掉这个东东吧
编辑:
afe9cd598f6fc1a2771819c36f4a004fb9a2a2e1\druid-1.1.20.pom
找到com.alibaba:jconsole
和com.alibaba:toolsjar
的依赖注释掉。 -
使用maven的systemPath本地引用jar包打包会丢失jar问题
2021-03-25 08:44:28接使用maven的systemPath本地引用oracle的jdbc驱动包,在本地直接使用idea开发运行不会有什么问题,oracle的jdbc驱动包能够正常引用,但是我们使用maven打包之后就出问题了,我们使用压缩软件打开打包出的jar包可以... -
springboot借助maven插件system path,加载本地jar
2020-06-09 22:05:24当引用第三方包,且没有源代码时候,可以使用system path <dependency> <groupId>ctec</groupId> <artifactId>xxx-core</artifactId>...systemPath>${project.b -
[WARNING] 'dependencies.dependency.systemPath' for...
2020-04-08 11:07:461. 描述 使用Maven打包时,总是会出现... ${basedir}/web/WEB-INF/lib/jbarcode-0.2.8.jar will be unresolvable by dependent projects @ line 886, column 16 [WARNING] 'dependencies.dependency.systemPath' for ... -
【maven】dependency的systemPath属性:引入本地系统中的jar
2020-02-12 09:37:19前言 maven 3.5.0 web项目 以 oracle 的 ojdbc7 jar 为例。 将 ojdbc7-12.1.0.1.jar 手工放置到 ...systemPath ...systemPath > dependency > ... dependencys > ... project > -
Maven打包提示dependencies.dependency.systemPath错误
2020-09-19 10:58:43Maven打包提示dependencies.dependency.systemPath错误 具体信息如下: Some problems were encountered while building the effective model for com.cs:xxx:jar:0.0.1-SNAPSHOT 'dependencies.dependency.system... -
‘dependencies.dependency.systemPath‘ for***:jar should not point at files Warning解决办法
2021-10-14 17:50:09Maven项目引用自定义的jar包,pom.xml中需要引入此类jar包。 <dependency> <groupId>***.licence</groupId> <artifactId>***-licence-manage<...system</scope> <syste -
解决Maven使用<systemPath>标签的warning
2018-11-19 11:28:37systemPath>标签时,打包项目时会报警告,具体如下所示: 为了解决这个warning,使用如下maven插件: <plugin> <groupId>org.apache.maven.plugins</groupId&... -
Cannot find AVD system path. Please define ANDROID_SDK_ROOT错误的解决
2020-06-14 14:02:30文章目录前言先说出现这种错误的原因再说解决最后我们谈一下为什么大家都会遇到这种错误 前言 我在网上看到各种这种错误的报错以及解决方案,搜了几百条没有一条说道正点上去,我也是服气,由于我也遇到了这个错误... -
IntelliJ IDEA 启动不了 system path invalid
2018-06-01 17:48:311.问题:IntelliJ IDEA 安装或者启动时系统弹出 system path invalid;2.分析原因:打开目录“C:\Users\Administrator\.IntelliJIdea***”文件夹,发现目录下有两个文件“config”和“system”,双击“config”... -
'dependencies.dependency.systemPath'
2019-05-20 20:07:17报警告:'dependencies.dependency.systemPath' for A:jar should not point at files within the project directory, ${basedir}/libs/A.jar will be unresolvable by dependent projects 将basedir改成pom.... -
Emulator: PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT,博主亲自验证有效
2020-01-05 14:38:32Emulator: PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下... -
Spring Boot Maven项目使用SystemPath引用第三方平台遇到的大坑
2018-10-15 17:24:38<systemPath>${basedir}/lib/face-api-1.0.jar</systemPath> 但很多人讲到这里就没讲了,你会发现在IDE里会运行的非常好,一旦部署在线上环境,就会出现莫名其妙的问题。比如我遇到的不会抛异常,会一直卡在... -
解决systemPath引入jar报java.lang.NoClassDefFoundError错误
2019-02-21 17:37:57今天写项目,由于需要外部的jar,所以用下面的方式引入jar 在项目运行后报错java.lang....所以不能用systemPath的方式引入到项目中 解决办法: 1.Maven mvn install 本地jar添加到maven仓... -
AS神奇的报错:Cannot find AVD system path. Please define ANDROID_SDK_ROOT
2020-02-25 11:20:28AS神奇的报错: 原文链接:...报错1:Cannot find AVD system path. Please define ANDROID_SDK_ROOT 报错2:android-stud... -
maven 打jar包时将systemPath引入的包也打到jar中。
2019-10-12 11:48:15<groupId>org.apache.maven.plugins <artifactId>maven-assembly-plugin <version>3.1.1 <descriptorRef>jar-with-dependencies ... <descriptor>src/main/assembly/... <scope>system -
[ERROR FileExisting-conntrack]: conntrack not found in system path
2020-07-17 22:11:35使用kubeadin init安装kubernetes时报如下错误: 解决方法: yum -y install socat conntrack-tools -
Android Studio 报错Emulator: PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT...
2020-10-07 17:06:56Emulator: PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT 仿真器:进程结束退出代码1 模拟器:恐慌:找不到AVD系统路径。请定义ANDROID_SDK_ROOT** 解决办法如下: 1.先把下载的AVD全部删除 ... -
【报错】Cannot find AVD system path. Please define ANDROID_SDK_ROOT
2020-05-17 10:18:02在【系统变量】中,添加变量`ANDROID_SDK_HOME`,值自己选定一个存储的文件夹即可,可以不放到C盘,节约空间,路径中不能有中文。 -
Emulator: PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT
2020-02-08 13:45:18我们安装完毕Android Studio之后,创建第一个项目,我们想要使用模拟器进行运行,但是当我们启动模拟器的时候却发现无法启动,而且出现了错误信息。 首先我们要知道错误信息是什么? 提示信息的意思是说“avd系统... -
Spring Boot Maven项目使用SystemPath引用第三方平台:ClassNotFind错误
2018-12-05 15:34:47<systemPath>${project.basedir}/lib/fabric-sdk-java-1.1.0-jar-with-dependencies.jar</systemPath> groupId、artifactId、version随意填写,systemPath指定jar包在本项目中的路径。 2.打包本项目jar包... -
maven中的scope,systempath标签的含义
2017-07-20 18:19:00maven中的scope,systempath标签的含义 sco... -
Emulator: PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value
2019-08-10 11:13:15出现这种报错信息Emulator: PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value 或者是Cannot find AVD system path. Please define ANDROID_SDK_ROOT 我的电脑上本来有个Eclipse的安卓路径,想要再... -
关于 【Android Studio】 Emulator: PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value ...
2020-07-10 14:47:58关于 【Android Studio】 Emulator: PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value 报错解决方法 昨天用完eclipse今天就打不开Android studio 虚拟机,Android studio直接给我一个报错信息。我... -
Project build error: ‘dependencies.dependency.systemPath’ for ...
2020-03-31 09:23:18Project build error: ‘dependencies.dependency.systemPath’ for com.sun:tools:jar must specify an absolute path but is ${JAVA_HOME}/lib/tools.jar