首页
归档
留言
友链
广告合作
壁纸
更多
美女主播
Search
1
博瑞GE车机升级/降级
5,610 阅读
2
Mac打印机设置黑白打印
4,951 阅读
3
修改elementUI中el-table树形结构图标
4,895 阅读
4
Mac客户端添加腾讯企业邮箱方法
4,674 阅读
5
intelliJ Idea 2022.2.X破解
4,357 阅读
后端开发
HarmonyOS Next
Web前端
微信开发
开发辅助
App开发
数据库
随笔日记
登录
/
注册
Search
标签搜索
Spring Boot
Java
Vue
Spring Cloud
Mac
MyBatis
WordPress
MacOS
asp.net
Element UI
Nacos
.Net
Spring Cloud Alibaba
MySQL
Mybatis-Plus
Typecho
jQuery
Java Script
IntelliJ IDEA
微信小程序
Laughing
累计撰写
627
篇文章
累计收到
1,421
条评论
首页
栏目
后端开发
HarmonyOS Next
Web前端
微信开发
开发辅助
App开发
数据库
随笔日记
页面
归档
留言
友链
广告合作
壁纸
美女主播
搜索到
5
篇与
的结果
2025-03-30
Idea与Maven版本兼容性问题
日常开发过程中,我们一般经常更新IntelliJ IDEA,但是很少更新Maven,而且一般现在项目使用的Maven还是3.X版本,所以基本上也没碰到过IntelliJ IDEA与Maven的兼容性问题,起码我之前是从来没有遇到过的。先说说我遇到的问题,我目前IntelliJ IDEA使用的版本是ideaIU-2024.3.5,Maven使用的版本是4.0.0-rc-3。遇到的问题,就是单独使用Maven在控制台执行mvn package能够打包项目,但是通过IntelliJ IDEA打包时报错,报错信息如下。最终是通过更新IntelliJ IDEA 2025.1 Beta 3解决了问题,其实问题根本原因就是Maven版本太高而IntelliJ IDEA版本太低导致的。我尝试查阅Maven及IntelliJ IDEA官网,但是都没有找到关于IntelliJ IDEA与Maven版本兼容性的说明。如果我们遇到类似的Maven能打包但是IntelliJ IDEA无法打包的情况,可以考虑一下是否Maven版本太高而IntelliJ IDEA版本太低导致的,如果我们无法确认IntelliJ IDEA与Maven具体兼容的版本,可以考虑更新IntelliJ IDEA,也就是尽量确保使用IntelliJ IDEA发布日期比Maven发布日期晚的版本,这样能极可能的减少遇到兼容性问题。
2025年03月30日
45 阅读
0 评论
0 点赞
2022-09-14
maven编译项目的时候出现 Malformed \uxxxx encoding
在./m2/文件夹下,找到path-to-the-library,然后删掉(若无此文件,可直接忽略此步骤);在./m2/repository文件夹下全局搜索:resolver-status.properties文件,将搜索到的所有此文件全部删除,然后重新编译即可。
2022年09月14日
1,605 阅读
0 评论
0 点赞
2021-10-25
一文搞懂maven的scope属性
在SpringBoot开发时,我们一般使用maven作为项目的管理和构建工具。一般情况下,我们都是通过以下方式引入一个依赖。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.60</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.20</version> <scope>provided</scope> </dependency>以上三个依赖有没有发现,有些有scope属性,有些没有scope属性,而且scope属性的值也不一样。概述Maven中使用scope来指定当前包的依赖范围和依赖的传递性。常见的可选值有:compile,provided,runtime,test,system 等。所谓依赖范围,可以理解为项目的阶段,比如是在编译、测试、运行、打包哪个阶段有效。所谓传递性,是指项目依赖关系的传递。比如当前项目为A,A依赖于B,B依赖于C。知道B在A项目中的scope,那么怎么知道C在A中的scope呢?属性值编译调试运行打包传递性示例备注compile是是是是是无无test否是否否否junit测试代码的编译和执行,不会被打包runtime否是是是是JDBC驱动无provided是是是否否lombokprovided意味着打包的时候可以不用包进去,别的设施(Web Container)会提供system是是是否是本地jar包同provided,不过被依赖项不会从maven仓库抓,而是从本地文件系统拿,一定需要配合systemPath属性使用。不推荐使用system依赖。import否否否否否无无scope各种取值详解compile默认的依赖有效范围。如果在定义依赖关系的时候,没有明确指定依赖有效范围的话,则默认采用该依赖有效范围。此种依赖,在编译、运行、测试时均有效。provided在编译、测试时有效,但是在运行时无效。provided意味着打包的时候可以不用包进去,别的设施(Web Container)会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是在打包阶段做了exclude的动作。例如:servlet-api,运行项目时,容器已经提供,就不需要Maven重复地引入一遍了。runtime在运行、测试时有效,但是在编译代码时无效。说实话在终端的项目(非开源,企业内部系统)中,和compile区别不是很大。比较常见的如JSR×××的实现,对应的API jar是compile的,具体实现是runtime的,compile只需要知道接口就足够了。例如:JDBC驱动实现,项目代码编译只需要JDK提供的JDBC接口,只有在测试或运行项目时才需要实现上述接口的具体JDBC驱动。另外runntime的依赖通常和optional搭配使用,optional为true。我可以用A实现,也可以用B实现。test只在测试时有效,包括测试代码的编译,执行。例如:JUnit。PS: test表示只能在src下的test文件夹下面才可以使用,你如果在a项目中引入了这个依赖,在b项目引入了a项目作为依赖,在b项目中这个注解不会生效,因为scope为test时无法传递依赖。system在编译、测试时有效,但是在运行时无效。和provided的区别是,使用system范围的依赖时必须通过systemPath元素显式地指定依赖文件的路径。由于此类依赖不是通过Maven仓库解析的,而且往往与本机系统绑定,可能造成构建的不可移植,因此应该谨慎使用。scope的依赖传递当前项目为A,A依赖于B,B依赖于C。知道B在A项目中的scope,那么怎么知道C在A中的scope呢?答案是:当C是test或者provided时,C直接被丢弃,A不依赖C; 否则A依赖C,C的scope继承于B的scope。
2021年10月25日
1,037 阅读
0 评论
1 点赞
2020-09-25
maven配置之pom.xml文件详细说明
setting.xml主要用于配置maven的运行环境等一系列通用的属性,是全局级别的配置文件;而pom.xml主要描述了项目的maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和licenses,以及其他所有的项目相关因素,是项目级别的配置文件。典型的pom.xml文件结构<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- 模型版本。maven2.0必须是这样写,现在是maven2唯一支持的版本 --> <modelVersion>4.0.0</modelVersion> <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.winner.trade,maven会将该项目打成的jar包放本地路径:/com/winner/trade --> <groupId>com.winner.trade</groupId> <!-- 本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 --> <artifactId>trade-core</artifactId> <!-- 本项目目前所处的版本号 --> <version>1.0.0-SNAPSHOT</version> <!-- 打包的机制,如pom,jar, maven-plugin, ejb, war, ear, rar, par,默认为jar --> <packaging>jar</packaging> <!-- 帮助定义构件输出的一些附属构件,附属构件与主构件对应,有时候需要加上classifier才能唯一的确定该构件 不能直接定义项目的classifer,因为附属构件不是项目直接默认生成的,而是由附加的插件帮助生成的 --> <classifier>...</classifier> <!-- 定义本项目的依赖关系 --> <dependencies> <!-- 每个dependency都对应这一个jar包 --> <dependency> <!--一般情况下,maven是通过groupId、artifactId、version这三个元素值(俗称坐标)来检索该构件, 然后引入你的工程。如果别人想引用你现在开发的这个项目(前提是已开发完毕并发布到了远程仓库),--> <!--就需要在他的pom文件中新建一个dependency节点,将本项目的groupId、artifactId、version写入, maven就会把你上传的jar包下载到他的本地 --> <groupId>com.winner.trade</groupId> <artifactId>trade-test</artifactId> <version>1.0.0-SNAPSHOT</version> <!-- maven认为,程序对外部的依赖会随着程序的所处阶段和应用场景而变化,所以maven中的依赖关系有作用域(scope)的限制。 --> <!--scope包含如下的取值:compile(编译范围)、provided(已提供范围)、runtime(运行时范围)、test(测试范围)、system(系统范围) --> <scope>test</scope> <!-- 设置指依赖是否可选,默认为false,即子项目默认都继承:为true,则子项目必需显示的引入,与dependencyManagement里定义的依赖类似 --> <optional>false</optional> <!-- 屏蔽依赖关系。 比如项目中使用的libA依赖某个库的1.0版,libB依赖某个库的2.0版,现在想统一使用2.0版,就应该屏蔽掉对1.0版的依赖 --> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <!-- 为pom定义一些常量,在pom中的其它地方可以直接引用 使用方式 如下 :${file.encoding} --> <properties> <file.encoding>UTF-8</file.encoding> <java.source.version>1.5</java.source.version> <java.target.version>1.5</java.target.version> </properties> ... </project>
2020年09月25日
1,297 阅读
0 评论
0 点赞
2019-07-08
VSCode结合maven配置Java开发环境
这里主要介绍一下pom.xml文件的配置,防止遗忘。{message type="success" content="这里主要是配置了struts2的一个环境作为Demo"/}项目结构由于修改了默认的maven项目目录的存储结构,所以需要同步修改pom.xml文件,防止打包失败。简单说一下项目的结构src顶层主要用户存储开发相关的源文件target是intall生成的文件java是空文件夹,目前没用Net下面存放的java文件resources下面就配置了一个struts.xml文件WebContent用于配置jsp等静态文件pom.xml配置如下<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>Cc.LiSen</groupId> <artifactId>Cc.LiSen</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>Cc.LiSen Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.5.1</version> </dependency> </dependencies> <build> <finalName>Cc.LiSen</finalName> <!--项目相关的所有资源路径列表,例如和项目相关的配置文件、属性文件,这些资源被包含在最终的打包文件里。 --> <resources> <resource> <!--描述了资源的目标路径。该路径相对target/classes目录(例如${project.build.outputDirectory})。 --> <!--举个例子,如果你想资源在特定的包里(org.apache.maven.messages),你就必须该元素设置为org/apache/maven/messages。 --> <!--然而,如果你只是想把资源放到源码目录结构里,就不需要该配置。 --> <!--是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素里列出。 --> <filtering>true</filtering> <!--描述存放资源的目录,该路径相对POM路径 --> <directory>${project.basedir}\src\resources</directory> <!--包含的模式列表 --> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <!--排除的模式列表 如果<include>与<exclude>划定的范围存在冲突,以<exclude>为准 --> <excludes> <exclude>jdbc.properties</exclude> </excludes> </resource> </resources> <!--项目源码目录,当构建项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径。 --> <sourceDirectory>${basedir}\src\</sourceDirectory> <!--项目脚本源码目录,该目录和源码目录不同, 绝大多数情况下,该目录下的内容会被拷贝到输出目录(因为脚本是被解释的,而不是被编译的)。 --> <scriptSourceDirectory>${basedir}\src\scripts</scriptSourceDirectory> <plugins> <plugin> <artifactId>maven-war-plugin</artifactId> <configuration> <!--指定web.xml文件的位置--> <webXml>src\WebContent\WEB-INF\web.xml</webXml> <!--指定jsp等文件所在位置--> <warSourceDirectory>src\WebContent</warSourceDirectory> </configuration> </plugin> </plugins> </build> </project>
2019年07月08日
2,137 阅读
0 评论
0 点赞