1.maven是码下干嘛的?
2.CVE-2021-3019 Lanproxy 目录遍历漏洞
3.如何把github上下载下来的maven源代码zip文件打包成可运行的jar文件
4.java中的maven是干什么的?
5.Maven常用命令
6.mavenåªè½ç¨äºjavaï¼
maven是干嘛的?
项目构建,管理,码下jar包下载,码下使用maven可以实现项目自动化构建和管理。码下例如:
mvn compile - 下载jar文件并编译项目。码下
mvn test - 执行测试。码下注册域名源码
mvn dependency: sources - 尝试下载源代码文件。码下
mvn eclipse:eclipse - 生成eclipse工程配置文件。码下
成功配置maven后,码下可以进行以下操作:
1)下载并解压maven。码下
2)设置环境变量,码下以便在命令行中运行maven命令。码下
3)在命令行中测试maven是码下否成功配置。
接下来,码下使用maven进行项目管理:
5)使用maven创建Java工程,码下可以减少配置文件,自动下载依赖库,并进行测试。
6)使用pom文件描述项目信息,便于团队管理。
7)maven提供了仓库概念,使得依赖库可共享。
8)maven主要功能包括项目构建、govalve源码依赖管理、持续集成、版本管理等。
9)通过maven,项目更科学地管理,构建更有效,更易于维护。
)maven能帮助发现重复的代码和组件,提高项目的复用性。
)maven环境搭建涉及下载maven、解压、设置环境变量和测试配置。
)maven使用入门包括创建项目、编写代码、配置依赖和打包。
)利用IDE如Myeclipse构建POM文件。
)总结maven环境搭建和入门命令,了解其思想和功能。
CVE-- Lanproxy 目录遍历漏洞
Lanproxy 0.1版本存在路径遍历漏洞,此漏洞允许攻击者通过读取'../conf/config.properties'文件,获取内部网络连接凭证。Lanproxy是jsc源码一个内网穿透工具,支持TCP流量转发,适用于各种TCP上层协议,如访问内网网站、本地支付接口调试、SSH访问、远程桌面等。修复前,修复补丁检测路径中是否存在'../',若存在则返回'Forbidden'。漏洞成因在于未对用户输入的路径进行过滤,允许攻击者利用此漏洞访问任意文件。
漏洞复现过程中,首先拉取源码:git clone github.com/ffay/lanprox...,然后回退到漏洞修复前的版本:cd lanproxy/;git reset --hard fadb1fca4dbcbcd9fbb8b2f;maven编译项目:mvn package。项目编译后,会在根目录下生成distribution目录,包含服务端、客户端文件。
在配置文件config.properties中,可以使用Payload进行漏洞测试:运行启动命令:sh distribution/proxy-server-0.1/bin/startup.sh;访问.0.0.1:端口,环境启动成功后,获取到config.properties配置文件,gotime源码其中包含管理页面用户名、密码、以及SSL相关配置。
漏洞分析过程中,通过设置debug模式,发现Lanproxy启动脚本中的调试端口为。在IDEA中配置动态调试,断点设置在src/main/java/org/fengfei/lanproxy/server/config/web/HttpRequestHandler.java#outputPages处,通过URI实例获取到uriPath:/%2F..%2Fconf%2Fconfig.properties。接下来,判断该路径是否为'/',若是返回index.html,否则返回获取到的uriPath。随后,使用PAGE_FOLDER获取当前程序目录,拼接uriPath生成新的File实例rfile,进一步检查是否为目录,并验证文件是否存在。最终使用RandomAccessFile()读取文件,已达到读取config.properties文件的目的。
修复建议包括:安装最新Lanproxy版本,可以通过源码或最新安装包进行更新。pythonlinux源码源码下载链接为github.com/ffay/lanprox...,安装包下载链接为file.nioee.com/d/2e...
如何把github上下载下来的maven源代码zip文件打包成可运行的jar文件
1.下载Spring源码
git下载地址:/SpringSource/spring-framework/
2.下载完成后,编译前需满足的先决条件
1)当前系统中安装了gradle,如果为安装,可以从:/release/STS/3.3.0/dist/e4.3/spring-tool-suite-3.3.0.RELEASE-e4.3-win.zip
直接回车确认即可
4)接着会提示要运行的命令是:
./gradlew cleanEclipse :spring-oxm:compileTestJava eclipse -x :eclipse
直接回车确认
5)接下来会自动下载所需的依赖包,等待其下载、编译完成即可。
编译的过程中,第一次编译停留在“> Building > :spring-core:cglibRepackJar”这个提示处很久,查看cmd的进程,貌似死了,我将其结束后重新运行,依旧停留在这个地方。
注:在编译过程中,经常出现在下载依赖项时没有响应的情况,需要找到对应的java进程,结束后重新运行,或者直接关闭命令行窗口重新来一次,暂未找到具体原因。
猜测应该和我的网络状况和java环境有关,编译过程中尝试了jdk8的位和位版本,都有这个问题。
在编译多次不成功以后,我通过运行gradlew.bat install,尝试先把所有的依赖项都先下载下来,在下载子项目相关的依赖项的过程中,仍然会出现命令没有响应的情况,只能一次又一次地关闭,重新运行。
一次又一次编译假死后,终于看到了“BUILD SUCCESS”,再次运行import-into-eclipse.bat,这次运行,跳过了很多之前需要下载的依赖项,应该是运行install命令的时候已经下载过了,但还是有一些仍然需要下载的依赖项。观察输出,会发现首先会下载依赖项所对应的pom文件,接着才会下载对应的jar。应该是和Maven相关的,有时间要把Maven、ant、ivy、gradle这些都看一下。
java中的maven是干什么的?
在Java开发中,Maven扮演着至关重要的角色,它是一种项目管理工具,基于项目对象模型设计,旨在简化项目的构建、报告生成和文档管理。通过Maven,开发者可以轻松处理第三方库(如JAR文件)的引用问题,例如版本管理和冲突避免,只需配置相应的依赖管理即可。 对于项目资源,Maven通常处理的是binary(二进制文件),也就是编译后的可执行文件,如Windows系统常用的zip格式,或者Linux系统常用的tar.gz格式。源码(source)则由Maven的source artifact提供,开发过程中如果需要深入研究项目原理,可以下载源码进行查看。 Maven的使用非常直观,常用命令包括但不限于:创建新项目(mvn archetype:generate)、编译源代码(mvn compile)、部署项目(mvn deploy)、运行单元测试(mvn test)以及生成项目网站(mvn site)等。它还能帮助清理项目目录(mvn clean),打包jar文件(mvn package)和本地安装(mvn install),甚至生成Eclipse项目文件(mvn eclipse:eclipse)。 总的来说,Maven是Java开发者日常开发中的得力助手,极大提升了项目管理和开发效率。如果你对Java项目管理有任何需求,Maven无疑是一个值得掌握的工具。Maven常用命令
Maven命令是构建和管理Maven项目的工具。这些命令使得开发者可以更高效地执行Maven项目的基本操作。
其中,mvn archetype:create命令用于创建Maven项目。此命令生成一个包含基本结构的项目,包括目录结构、文件模板和配置文件,方便快速开始项目开发。
mvn compile命令用于编译源代码。执行此命令后,所有源代码将被编译成字节码,为后续的构建和运行打下基础。
mvn test-compile命令用于编译测试源代码。与编译源代码类似,此命令将测试代码编译为可以运行的字节码。
mvn test命令用于运行应用程序中的单元测试。通过此命令,开发者可以测试单个类或方法的功能,确保代码的正确性和稳定性。
mvn site命令生成项目相关信息的网站。此命令将项目文档、依赖关系和构建信息等整合到一个网站中,方便用户查看和管理。
mvn clean命令清除项目目录中的生成结果。执行此命令后,所有构建生成的文件和输出将被删除,为下一次构建提供干净的工作空间。
mvn package命令根据项目生成的jar。此命令将编译的源代码、测试代码、依赖库和配置文件打包成一个可执行的jar文件,便于部署和分发。
mvn install命令在本地Repository中安装jar。执行此命令后,生成的jar将被添加到本地Maven仓库中,供其他项目引用。
mvn eclipse:eclipse命令生成eclipse项目文件。此命令将项目配置信息和源代码文件转换为eclipse项目,方便在eclipse中进行开发和调试。
mvn jetty:run命令启动jetty服务。执行此命令后,jetty服务器将运行在本地,用于运行和测试Web应用。
mvn tomcat:run命令启动tomcat服务。此命令将tomcat服务器部署到本地,用于运行和测试Java Web应用。
mavenåªè½ç¨äºjavaï¼
Mavenæ¯ä»ä¹å°å¹²æ´»
1å ³é®åè¯
Projectï¼ä»»ä½æ¨æ³buildçäºç©ï¼Mavené½å¯ä»¥è®¤ä¸ºå®ä»¬æ¯å·¥ç¨ãè¿äºå·¥ç¨è¢«å®ä¹ä¸ºå·¥ç¨å¯¹è±¡æ¨¡å(POMï¼PojectObjectModel)ãä¸ä¸ªå·¥ç¨å¯ä»¥ä¾èµå ¶å®çå·¥ç¨ï¼ä¸ä¸ªå·¥ç¨ä¹å¯ä»¥ç±å¤ä¸ªåå·¥ç¨ææã
POMï¼POM(pom.xml)æ¯Mavençæ ¸å¿æ件ï¼å®æ¯æ示Mavenå¦ä½å·¥ä½çå æ°æ®æ件ï¼ç±»ä¼¼äºAntä¸çbuild.xmlæ件ãPOMæ件ä½äºæ¯ä¸ªå·¥ç¨çæ ¹ç®å½ä¸ã
GroupIdï¼groupIdæ¯ä¸ä¸ªå·¥ç¨çå¨å ¨å±ä¸å¯ä¸çæ è¯ç¬¦ï¼ä¸è¬å°ï¼å®å°±æ¯å·¥ç¨åãgroupIdæå©äºä½¿ç¨ä¸ä¸ªå®å ¨çå åï¼å°ä¸ä¸ªå·¥ç¨ä»å ¶å®æ类似å称çå·¥ç¨éåºå«åºæ¥ã
Artifactï¼artifactæ¯å·¥ç¨å°è¦äº§çæéè¦ä½¿ç¨çæ件ï¼å®å¯ä»¥æ¯jaræ件ï¼æºæ件ï¼äºè¿å¶æ件ï¼waræ件ï¼çè³æ¯pomæ件ãæ¯ä¸ªartifacté½ç±groupIdåartifactIdç»åçæ è¯ç¬¦å¯ä¸è¯å«ãéè¦è¢«ä½¿ç¨(ä¾èµ)çartifacté½è¦æ¾å¨ä»åº(è§Repository)ä¸ï¼å¦åMavenæ æ³æ¾å°(è¯å«)å®ä»¬ã
Dependencyï¼ä¸ºäºè½å¤buildæè¿è¡ï¼ä¸ä¸ªå ¸åçJavaå·¥ç¨ä¼ä¾èµå ¶å®çå ãå¨Mavenä¸ï¼è¿äºè¢«ä¾èµçå 就被称为dependencyãdependencyä¸è¬æ¯å ¶å®å·¥ç¨çartifactã
Plug-inï¼Mavenæ¯ç±æ件ç»ç»çï¼å®çæ¯ä¸ä¸ªåè½é½æ¯ç±æ件æä¾çãæ件æä¾goal(类似äºAntä¸çtarget)ï¼å¹¶æ ¹æ®å¨POMä¸æ¾å°çå æ°æ®å»å®æå·¥ä½ã主è¦çMavenæ件è¦æ¯ç±Javaåæçï¼ä½å®ä¹æ¯æç¨BeanshellæAntèæ¬åæçæ件ã
Repositoryï¼ä»åºç¨äºåæ¾artifactï¼å®å¯ä»¥æ¯æ¬å°ä»åºï¼ä¹å¯ä»¥æ¯è¿ç¨ä»åºãMavenæä¸ä¸ªé»è®¤çè¿ç¨ä»åº--centralï¼å¯ä»¥ä»ä¸è½½å ¶ä¸çartifactãå¨Windowså¹³å°ä¸ï¼æ¬å°ä»åºçé»è®¤å°åæ¯User_Home/.m2/repositoryã
Snapshotï¼å·¥ç¨ä¸å¯ä»¥(ä¹åºè¯¥)æä¸ä¸ªç¹æ®çæ¬ï¼å®ççæ¬å·å æ¬SNAPSHOTåæ ·ã该çæ¬å¯ä»¥åè¯Mavenï¼è¯¥å·¥ç¨æ£å¤äºå¼åé¶æ®µï¼ä¼ç»å¸¸æ´æ°(ä½è¿æªåå¸)ãå½å ¶å®å·¥ç¨ä½¿ç¨æ¤ç±»åçæ¬çartifactæ¶ï¼Mavenä¼å¨ä»åºä¸å¯»æ¾è¯¥artifactçææ°çæ¬ï¼å¹¶èªå¨ä¸è½½ã使ç¨è¯¥ææ°çã
2MavenBuildLifeCycle
软件项ç®ä¸è¬é½æç¸ä¼¼çå¼åè¿ç¨ï¼åå¤ï¼ç¼è¯ï¼æµè¯ï¼æå åé¨ç½²ï¼Mavenå°ä¸è¿°è¿ç¨ç§°ä¸ºBuildLifeCycleãå¨Mavenä¸ï¼è¿äºçå½å¨æç±ä¸ç³»åççè¯ç»æï¼æ¯ä¸ªçè¯å¯¹åºçä¸ä¸ª(æå¤ä¸ª)æä½ï¼æ对åºçä¸ä¸ª(æå¤ä¸ª)goal(类似äºAntä¸çtarget)ã
å¦ç¼è¯æºæ件çå½ä»¤mvncompileä¸çcompileæ¯ä¸ä¸ªçå½å¨æçè¯ãåæ¶è¯¥å½ä»¤ä¹å¯ä»¥çä»·äºmvncompiler:compileï¼å ¶ä¸çcompileræ¯ä¸ä¸ªæ件ï¼å®æä¾äºcompile(æ¤compileä¸mvncompileä¸çcompileæä¹ä¸å)goalï¼compilerè¿å¯æä¾å¦ä¸ä¸ªgoal--testCompileï¼è¯¥goalç¨äºç¼è¯junitæµè¯ç±»ã
å¨æ§è¡æä¸ä¸ªçå½å¨ææ¶ï¼Mavenä¼é¦å æ§è¡è¯¥çå½å¨æä¹åçå ¶å®å¨æãå¦è¦æ§è¡compileï¼é£ä¹å°é¦å æ§è¡validateï¼generate-sourceï¼process-sourceågenerate-resourcesï¼æååæ§è¡compileæ¬èº«ãå ³äºMavenä¸é»è®¤ççå½å¨æçè¯ï¼è¯·è§åèèµæº[6]ä¸çéå½B.3ã
3æ åç®å½å¸å±
Maven为工ç¨ä¸çæºæ件ï¼èµæºæ件ï¼é ç½®æ件ï¼çæçè¾åºåææ¡£é½å¶å®äºä¸ä¸ªæ åçç®å½ç»æãMavené¼å±ä½¿ç¨æ åç®å½å¸å±ï¼è¿æ ·å°±ä¸éè¦è¿è¡é¢å¤çé ç½®ï¼èä¸æå©äºå个ä¸åå·¥ç¨ä¹é´çèæ¥ãå½ç¶ï¼Mavenä¹å 许å®å¶ä¸ªæ§çç®å½å¸å±ï¼è¿å°±éè¦è¿è¡æ´å¤çé ç½®ãå ³äºMavençæ åç®å½å¸å±ï¼è¯·è§åèèµæº[6]ä¸çéå½B.1ã
4Mavençä¼ç¹
[1]buildé»è¾å¯ä»¥è¢«éç¨ãå¨Antä¸å¯è½éè¦å¤æ¬¡éå¤å°åç¸åçè¯å¥ï¼ä½ç±äºPOMç继æ¿æ§ï¼å¯ä»¥å¤ç¨å ¶å®çPOMæ件ä¸çè¯å¥ãè¿æ ·æ¢å¯ä»¥ååºæ¸ æ°çbuildè¯å¥ï¼åå¯ä»¥æé åºå±æ¬¡å ³ç³»è¯å¥½çbuildå·¥ç¨ã
[2]ä¸å¿ å ³æ³¨buildå·¥ä½çå®ç°ç»èãæ们åªéè¦ä½¿ç¨ä¸äºbuildçå½å¨æçè¯å°±å¯ä»¥è¾¾å°æ们çç®æ ï¼èä¸å¿ 管Mavenæ¯å¦ä½åå°è¿äºçãå¦ï¼åªéè¦åè¯Mavenè¦å®è£ (install)ï¼é£ä¹å®èªç¶å°±ä¼éªè¯ï¼ç¼è¯ï¼æå ï¼åå®è£ ã
[3]Mavenä¼éå½å 载工ç¨ä¾èµçartifactæä¾èµçå ¶å®artifactï¼èä¸ç¨æ¾ç¤ºçå°è¿äºartifactå ¨é¨åå°dependencyä¸ã
[4]å¦æå®å ¨ä½¿ç¨Mavençæ åç®å½å¸å±ï¼é£ä¹å¯ä»¥æ大å°åå°é ç½®ç»èã
5å®ä¾
5.1ææ³
ç±äºåªæ¯éè¿°Mavençåºæ¬ä½¿ç¨æ¹æ³ï¼æ以æ¬æå°è¦è®¾è®¡çå®ä¾ï¼åªæ¯ä¸ä¸ªç®åçMavendemoã该å®ä¾å å«ä¸¤ä¸ªå·¥ç¨ï¼æ®éåºç¨ç¨åºå·¥ç¨(app)åWebåºç¨å·¥ç¨(webapp)ãappå·¥ç¨æä¾ä¸ä¸ªç®åçJavaç±»ï¼webappå·¥ç¨åªå å«ä¸ä¸ªServletï¼å¹¶å°ä½¿ç¨appä¸çJavaç±»ã
该Demoçç®æ æ¯è½å¤æ£ç¡®å°å°webappå¶æwarå ï¼ä»¥ä¾é¨ç½²æ¶ä½¿ç¨ãè¦è½å¤æ£ç¡®å¶ä½warï¼èªç¶é¦å å°±å¿ é¡»è¦è½å¤æ£ç¡®çç¼è¯æºä»£ç ï¼ä¸è¦å°App模åå¶æjarå ãæ¬æå建çå·¥ç¨æå¨çç®å½æ¯D:/maven/demoã
5.2Appå·¥ç¨
å¯ä»¥ä½¿ç¨Mavençarchetypeæ件æ¥å建æ°å·¥ç¨ï¼å½ä»¤å¦ä¸ï¼
D:/maven/demomvnarchetype:create-DgroupId=ce.demo.mvn-DartifactId=app
该工ç¨çgroupIdæ¯ce.demo.mvnï¼é£ä¹è¯¥å·¥ç¨çæºæ件å°æ¾å¨Javaå ce.demo.mvnä¸ãartifactIdæ¯appï¼é£ä¹è¯¥å·¥ç¨æ ¹ç®å½çå称å°ä¸ºappã
å½ç¬¬ä¸æ¬¡æ§è¡è¯¥å½ä»¤æ¶ï¼Mavenä¼ä»centralä»åºä¸ä¸è½½ä¸äºæ件ãè¿äºæ件å å«æ件archetypeï¼ä»¥åå®æä¾èµçå ¶å®å ã该å½ä»¤æ§è¡å®æ¯åï¼å¨ç®å½D:/maven/demoä¸ä¼åºç°å¦ä¸ç®å½å¸å±ï¼
app
|--pom.xml
`--src
|--main
|`--java
|`--ce
|`--demo
|`--mvn
|`--App.java
`--test
`--java
`--ce
`--demo
`--mvn
`--AppTest.java
å æ¬æææ¶ä¸æ¶åJUnitæµè¯ï¼æ 请å°ç®å½app/src/testç®å½å é¤ãç¶ååä¿®æ¹App.javaæ件ï¼å ¶å®å ¨å 容å¦ä¸ï¼
packagece.demo.mvn;
publicclassApp{
publicStringgetStr(Stringstr){
returnstr;
}
}
å ¶å®ï¼å¦ææ们è½å¤æ¸ æ¥å°ç¥éMavençæ åç®å½å¸å±ï¼å°±å¯ä»¥ä¸ä½¿ç¨archetypeæ件æ¥å建工ç¨ååï¼å¦ææ们è¦å®å¶ä¸ªæ§çç®å½å¸å±ï¼é£ä¹å°±æ´æ²¡æå¿ è¦ä½¿ç¨archetypeæ件äºã
å¦ä½ç¨mavenå°java8åç代ç ç¼è¯ä¸ºjava6å¹³å°çå¨ä¸è¬çJavaåºç¨å¼åè¿ç¨ä¸ï¼å¼å人å使ç¨Javaçæ¹å¼æ¯è¾ç®åãæå¼æ¯ç¨çIDEï¼ç¼åJavaæºä»£ç ï¼åå©ç¨IDEæä¾çåè½ç´æ¥è¿è¡Javaç¨åºå°±å¯ä»¥äºãè¿ç§å¼å模å¼èåçè¿ç¨æ¯ï¼å¼å人åç¼åçæ¯Javaæºä»£ç æ件ï¼.javaï¼ï¼IDEä¼è´è´£è°ç¨Javaçç¼è¯å¨æJavaæºä»£ç ç¼è¯æå¹³å°æ å ³çåè代ç ï¼bytecodeï¼ï¼ä»¥ç±»æ件çå½¢å¼ä¿åå¨ç£çä¸ï¼.classï¼ãJavaèææºï¼JVMï¼ä¼è´è´£æJavaåè代ç å 载并æ§è¡ãJavaéè¿è¿ç§æ¹å¼æ¥å®ç°å ¶âç¼åä¸æ¬¡ï¼å°å¤è¿è¡ï¼Writeonce,runanywhereï¼âçç®æ ãJavaç±»æ件ä¸å å«çåè代ç å¯ä»¥è¢«ä¸åå¹³å°ä¸çJVMæ使ç¨ãJavaåè代ç ä¸ä» å¯ä»¥ä»¥æ件形å¼åå¨äºç£çä¸ï¼ä¹å¯ä»¥éè¿ç½ç»æ¹å¼æ¥ä¸è½½ï¼è¿å¯ä»¥åªåå¨äºå åä¸ãJVMä¸çç±»å è½½å¨ä¼è´è´£ä»å å«åè代ç çåèæ°ç»ï¼byte[]ï¼ä¸å®ä¹åºJavaç±»ãå¨æäºæ åµä¸ï¼å¯è½ä¼éè¦å¨æççæJavaåè代ç ï¼ææ¯å¯¹å·²æçJavaåè代ç è¿è¡ä¿®æ¹ãè¿ä¸ªæ¶åå°±éè¦ç¨å°æ¬æä¸å°è¦ä»ç»çç¸å ³ææ¯ãé¦å ä»ç»ä¸ä¸å¦ä½å¨æç¼è¯Javaæºæ件ã
mavenæ¯javawebä¹mavenåjavaweb没æä»»ä½å ³ç³»
Maven项ç®å¯¹è±¡æ¨¡å(POM)ï¼å¯ä»¥éè¿ä¸å°æ®µæè¿°ä¿¡æ¯æ¥ç®¡ç项ç®çæ建ï¼æ¥ååææ¡£ç软件项ç®ç®¡çå·¥å ·ã
Mavené¤äºä»¥ç¨åºæ建è½å为ç¹è²ä¹å¤ï¼è¿æä¾é«çº§é¡¹ç®ç®¡çå·¥å ·ãç±äºMavenç缺çæ建è§åæè¾é«çå¯éç¨æ§ï¼æ以常常ç¨ä¸¤ä¸è¡Mavenæ建èæ¬å°±å¯ä»¥æ建ç®åç项ç®ãç±äºMavençé¢å项ç®çæ¹æ³ï¼è®¸å¤ApacheJakarta项ç®åææ¶ä½¿ç¨Mavenï¼èä¸å ¬å¸é¡¹ç®éç¨Mavençæ¯ä¾å¨æç»å¢é¿ã
mavenæä¹ä¼å 使ç¨jreç³»ç»åº
å½ä½¿ç¨Mavenæ建Java项ç®æ¶ï¼é»è®¤æ åµä¸ï¼Mavenä¼ä½¿ç¨é¡¹ç®ä¸æå®çJDKçæ¬ä¸çJavaåºï¼èä¸æ¯ä½¿ç¨ç³»ç»ä¸å®è£ çJREçæ¬ä¸çJavaåºãå¦ææ¨å¸æä¼å 使ç¨ç³»ç»ä¸çJREåºèä¸æ¯JDKåºï¼å¯ä»¥æç §ä»¥ä¸æ¥éª¤è¿è¡é ç½®ï¼
å¨é¡¹ç®çpom.xmlæ件ä¸æ·»å 以ä¸buildé ç½®ï¼
xml
Copycode
build
plugins
plugin
groupIdorg.apache.maven.plugins/groupId
artifactIdmaven-compiler-plugin/artifactId
version3.8.1/version
configuration
forktrue/fork
executable${ JAVA_HOME}/bin/javac/executable
compilerVersion/compilerVersion
source/source
target/target
compilerArgs
arg--release/arg
arg/arg
/compilerArgs
systemPropertyVariables
java.home${ env.JAVA_HOME}/java.home
/systemPropertyVariables
/configuration
/plugin
/plugins
/build
å¨ä¸é¢çé ç½®ä¸ï¼executableæå®äºè¦ä½¿ç¨çJavaç¼è¯å¨çè·¯å¾ï¼è¿é使ç¨äº${ JAVA_HOME}/bin/javacï¼å³ä½¿ç¨ç¯å¢åéJAVA_HOMEæå®çJREè·¯å¾ä¸çjavacå½ä»¤ãsystemPropertyVariablesæå®äºè¦ä½¿ç¨çJREè·¯å¾ï¼è¿é使ç¨äºç¯å¢åéJAVA_HOMEãè¿æ ·ï¼Mavenå°ä½¿ç¨ç¯å¢åéJAVA_HOMEæå®çJREè·¯å¾ä¸çJavaåºã
2.ç¡®ä¿æ¨çç³»ç»ä¸å®è£ äºJREï¼å¹¶è®¾ç½®äºç¯å¢åéJAVA_HOMEï¼è¯¥åéæåJREçå®è£ è·¯å¾ãæ¨å¯ä»¥éè¿å¨å½ä»¤è¡çªå£ä¸è¾å ¥echo$JAVA_HOMEæ¥æ£æ¥è¯¥åéæ¯å¦è®¾ç½®æ£ç¡®ã
3.å¨å½ä»¤è¡çªå£ä¸è¿å ¥é¡¹ç®çæ ¹ç®å½ï¼ç¶åè¿è¡ä»¥ä¸å½ä»¤æ¥æ建项ç®ï¼
bash
Copycode
mvncleaninstall
è¿å°ä½¿ç¨é ç½®çJREåºæ¥æ建项ç®ã
éè¿ä»¥ä¸é ç½®ï¼æ¨å¯ä»¥ä¼å 使ç¨ç³»ç»ä¸çJREåºèä¸æ¯JDKåºæ¥æ建Java项ç®ã
mavenä»ä¹æ¶åå¦å¨å¦æ¡æ¶çæ¶åä¸èµ·å¦ãMavenï¼ç¨äºJava项ç®çæ建ï¼ä¾èµç®¡çï¼é¡¹ç®ä¿¡æ¯ç®¡çç项ç®ç®¡çå·¥å ·ã使ç¨mavenå¯ä»¥ç®¡çå¾å¤ä¸ªjarå ï¼å¨å¦ä¹ æ¡æ¶çæ¶ååå¯¼å ¥å¾å¤å å¦çå¾ä¸æ¹ä¾¿ï¼å¦è¿ä¸ªææ¯å¯ä»¥å¾å¥½ç帮å©ç®¡çæ¡æ¶éé¢çåç§å ã
maven的Package的jar怎么看源码?
Maven的package的jar的源码可以通过以下几种方式查看:
1. 使用Eclipse或IntelliJ IDEA,导入该jar文件,然后导入项目,就可以查看源码了。
2. 使用JD-GUI工具,可以查看JAR文件的反编译源码。
3. 使用Maven插件,可以查看Maven依赖的源码,比如使用Maven-Source-Plugin插件,可以查看当前项目依赖的源码,通过以下命令可以查看:
mvn dependency:sources