1.如何把github上下来的打n打maven源代码zip文件打包成可运行的jar文件
2.云原生学习笔记10-Jenkins获取源码并用Maven打包
3.用maven打包jar项目其中很多模块引用了相同jar包,如何把它些jar公用,包j包源让maven打包不把这公用包打进去
4.Maven把项目依赖的源码所有jar包都打到同一个jar中
5.maven打包全流程原理
如何把github上下来的maven源代码zip文件打包成可运行的jar文件
1.下载Spring源码
git下载地址:/SpringSource/spring-framework/
2.下载完成后,编译前需满足的码和先决条件
1)当前系统中安装了gradle,如果为安装,打n打可以从:/release/STS/3.3.0/dist/e4.3/spring-tool-suite-3.3.0.RELEASE-e4.3-win.zip
直接回车确认即可
4)接着会提示要运行的包j包源查看.so文件源码命令是:
./gradlew cleanEclipse :spring-oxm:compileTestJava eclipse -x :eclipse
直接回车确认
5)接下来会自动下载所需的依赖包,等待其下载、源码编译完成即可。码和
编译的打n打过程中,第一次编译停留在“> Building > :spring-core:cglibRepackJar”这个提示处很久,包j包源查看cmd的源码进程,貌似死了,码和我将其结束后重新运行,打n打依旧停留在这个地方。包j包源
注:在编译过程中,源码经常出现在下载依赖项时没有响应的情况,需要找到对应的java进程,结束后重新运行,或者直接关闭命令行窗口重新来一次,暂未找到具体原因。
猜测应该和我的ztree 异步加载源码网络状况和java环境有关,编译过程中尝试了jdk8的位和位版本,都有这个问题。
在编译多次不成功以后,我通过运行gradlew.bat install,尝试先把所有的依赖项都先下载下来,在下载子项目相关的依赖项的过程中,仍然会出现命令没有响应的情况,只能一次又一次地关闭,重新运行。
一次又一次编译假死后,终于看到了“BUILD SUCCESS”,再次运行import-into-eclipse.bat,这次运行,跳过了很多之前需要下载的依赖项,应该是运行install命令的时候已经下载过了,但还是有一些仍然需要下载的依赖项。观察输出,会发现首先会下载依赖项所对应的pom文件,接着才会下载对应的jar。应该是和Maven相关的,有时间要把Maven、eclipse看不了源码ant、ivy、gradle这些都看一下。
云原生学习笔记-Jenkins获取源码并用Maven打包
借助Jenkins,通过集成Maven构建工具,可实现自动化获取源码并打包成jar文件。操作步骤如下:
在构建环境设置中,首先添加构建步骤,选择预先配置的Maven版本。点击应用并保存,这一步为Jenkins指示,其在获取源码后将使用配置的Maven进行打包操作。
在构建步骤配置中,目标选项设置跳过测试,确保构建流程的高效性。保存后返回至上一层界面,点击立即构建,此操作将触发Jenkins执行构建流程,由于Maven初始化仓库并下载依赖,构建时间可能较长,ecshop源码不能调试日志中记录详细信息。
构建完成后,Jenkins显示成功提示。进入容器内部,将发现新增加的target目录下,存在生成的jar文件。
接下来,将使用Jenkins将该jar文件推送到Docker,实现自动化部署和运行。至此,通过Jenkins集成Maven和Docker,完成自动化源码获取、打包、推送至Docker并运行的全过程。
用maven打包jar项目其中很多模块引用了相同jar包,如何把它些jar公用,让maven打包不把这公用包打进去
注意scope标签,compile和runtime两种依赖打包时会打进去,provided、system、易语言者源码test都不会打进去。如果不想打包时将依赖包含进去,可以按实际情况选择后面的方式。maven本身引用时,在没有打包前,这些jar都是存储在maven的repository里面给所有项目共享的,这也是maven的目标之一。如下图,请看jar包的路径。
Maven把项目依赖的所有jar包都打到同一个jar中
使用maven-shade-plugin
在项目的pom.xml文件中加入以下插件:
然后执行Maven的package命令打包项目。
完成后,在target目录下可见生成的jar包。
使用java -jar xxxx.jar命令即可运行此jar包。
在Mac OS系统下的IDEA中实施时,有时在jar/META-INF目录下会出现ECLIPSEF.SF、ECLIPSE.RSA等文件,并在运行java -jar xxx.jar时,会抛出错误。解决办法:手动删除jar包中META-INF/*.RSA、META-INF/*.DSA、META-INF/*.SF这些文件,然后即可正常运行。
推荐使用maven-assembly-plugin
在项目的pom.xml文件中加入以下插件:
执行Maven的package命令打包项目。
打包完成后,在target目录下可见生成的jar包,其中xxx-jar-with-dependencies.jar是包含依赖jar包的jar文件,另一个不包含依赖jar包。
使用java -jar xxxx.jar命令即可运行此jar包。
扩展:Maven安装本地jar包到本地仓库
执行以下命令
查阅Maven常用命令了解更多。
扩展:手动生成jar包
创建可执行jar包的关键在于让java -jar命令知道jar包中的主方法属于哪个类,即配置主类的全限定名。
步骤如下:
打包指定的项目,以Linux系统为例,项目名为java-test,位于/data/project/java-test目录下,主类全限定名为com.healchow.test.Main。
上述命令将java-test目录下的所有文件打包到test.jar中,并指定主类。
了解jar命令的其他用法。
扩展:Linux下运行jar包的几种方式
5.1 阻塞式方式:终端会话窗口被阻塞,可按CTRL + C中断程序运行,或关闭会话窗口终止程序。
5.2 后台运行方式:终端会话窗口不会被阻塞,但关闭当前窗口时,程序会终止运行。
5.3 后台持续运行方式:使用nohup命令运行任务,当用户退出或终端关闭时,程序运行不受影响。
使用nohup命令运行任务时,输出默认重定向到nohup.out文件,除非指定输出文件。
其他命令扩展:
① 通过jobs命令查看后台运行任务,任务将获得编号。
② 使用fg命令将指定编号的后台任务调回前台控制,如:fg 将号任务调回前台。
③ 查看占用某个端口的进程。
加入Java程序员开发群:
群内提供免费的Java架构学习资料(包括高可用、高并发、高性能、分布式、Jvm性能调优、Spring源码、MyBatis、Netty、Redis、Kafka、Mysql、Zookeeper、Tomcat、Docker、Dubbo、Nginx等)合理利用时间学习,提升自我,不再以“没有时间”为借口!
maven打包全流程原理
Maven是一个强大的构建工具,其打包流程涉及多个环节。首先,每个Maven项目都有一个组织名、项目名和版本号组成的唯一坐标,通过pom.xml文件进行配置,定义了项目基本信息和依赖关系。Maven通过中央仓库和其他远程或本地仓库来管理依赖,包括自动下载和解析传递性依赖。
构建过程遵循预定义的生命周期,如clean、compile、test、package和install等,每个阶段由插件执行相应任务。Maven Compiler Plugin用于编译Java源代码,Maven Surefire Plugin则负责运行测试。打包阶段,Maven JAR Plugin和WAR Plugin分别用于生成可执行JAR和Web应用的WAR文件,Assembly Plugin则支持创建自定义归档文件,Shade Plugin则解决依赖冲突问题。
settings.xml是Maven的全局配置文件,可以配置服务器认证、本地仓库、代理服务器等。在配置文件中,可以设置多个仓库,如在pom.xml中通过元素指定使用特定仓库。这样,即使在多个团队或依赖来源的情况下,也能灵活管理依赖项的获取。
执行Maven构建命令时,Maven会根据配置执行相应的任务,确保编译、测试、打包等环节的完整性和一致性。通过这些插件和配置,Maven提供了一个全面且易于管理的项目打包流程。