1.mavenåªè½ç¨äºjavaï¼
2.云原生学习笔记10-Jenkins获取源码并用Maven打包
3.使用maven和fat jar/war运行应用程序的不n不包对比
4.IDEAçDownload Sources å¨åªï¼
5.maven是干嘛的?
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å ï¼å¨å¦ä¹ æ¡æ¶çæ¶ååå¯¼å ¥å¾å¤å å¦çå¾ä¸æ¹ä¾¿ï¼å¦è¿ä¸ªææ¯å¯ä»¥å¾å¥½ç帮å©ç®¡çæ¡æ¶éé¢çåç§å ã
云原生学习笔记-Jenkins获取源码并用Maven打包
借助Jenkins,通过集成Maven构建工具,自动载可实现自动化获取源码并打包成jar文件。下载操作步骤如下:
在构建环境设置中,源码首先添加构建步骤,动下选择预先配置的不n不包补码源码和Maven版本。点击应用并保存,自动载这一步为Jenkins指示,下载其在获取源码后将使用配置的源码Maven进行打包操作。
在构建步骤配置中,动下目标选项设置跳过测试,不n不包确保构建流程的自动载教育 app 源码高效性。保存后返回至上一层界面,下载点击立即构建,源码此操作将触发Jenkins执行构建流程,动下由于Maven初始化仓库并下载依赖,构建时间可能较长,日志中记录详细信息。
构建完成后,Jenkins显示成功提示。进入容器内部,将发现新增加的target目录下,存在生成的jvav游戏源码jar文件。
接下来,将使用Jenkins将该jar文件推送到Docker,实现自动化部署和运行。至此,通过Jenkins集成Maven和Docker,完成自动化源码获取、打包、推送至Docker并运行的全过程。
使用maven和fat jar/war运行应用程序的对比
在处理Spring Boot应用程序的部署时,我们通常会遇到两种方式:使用Maven命令或创建fat jar/war包。Maven的储存资料源码mvn spring-boot:run命令提供了便利,而fat jar/war则适用于不同的部署环境。
Maven Spring Boot Plugin的运用,使得部署过程更加高效,它能在打包时自动下载依赖。通过在项目根目录下执行mvn命令,应用程序会自动运行,日志清晰可见。然而,如果要打包成fat jar/war,就需要借助插件,确保依赖被包含在内。yum源码解压对于多主类项目,需要明确指定启动类。
War文件解压后,可以看到包含启动类和Spring Boot默认main类的MANIFEST.MF文件。相比之下,jar文件的结构稍有不同,WEB-INF被替换为BOOT-INF,MANIFEST.MF中Start-Class保持一致,但Main-Class有所调整。
在选择运行方式时,开发环境通常偏向于mvn命令,因为它与源代码紧密关联,便于快速迭代。而在生产或线上环境,fat jar/war由于其小型化和无需额外依赖,更适合部署。只需要Java运行时环境即可。
以上内容可通过访问github.com/ddean/le...获取代码示例,更多教程可参考flydean的博客。
IDEAçDownload Sources å¨åªï¼
ä½ å¥½ï¼å¾é«å ´åçä½ çé®é¢ã
æ¯è¯´ä¸è½½æºç é£ä¸ªåï¼
ä½ éè¿Ctrlå é¼ æ ç¹å»è¦æ¥çæºç çç±»åææ¹æ³åçæ¶ï¼å¦æè¿æ²¡æä¸è½½æºç ï¼ä¼æ¾ç¤ºçæ¯classæ件ï¼è¿æ¶å¨è¿ä¸ªé¡µé¢çå³ä¸è§å°±ä¼ædowload sourcesæé®äºã
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主要功能包括项目构建、依赖管理、持续集成、版本管理等。
9)通过maven,项目更科学地管理,构建更有效,更易于维护。
)maven能帮助发现重复的代码和组件,提高项目的复用性。
)maven环境搭建涉及下载maven、解压、设置环境变量和测试配置。
)maven使用入门包括创建项目、编写代码、配置依赖和打包。
)利用IDE如Myeclipse构建POM文件。
)总结maven环境搭建和入门命令,了解其思想和功能。