1.Maven把项目依赖的所有jar包都打到同一个jar中
2.Foliage篇-ProceduralFoliageSpawner 源码分析拓展-允许亲疏关系
3.聊聊如何避免多个jar通过maven打包成一个jar,多个同名配置文件发生覆盖问题
4.Java 命令 javac、java
5.自学maven教程5-常用插件介绍
6.求关于d'espairsray乐队的东西
Maven把项目依赖的所有jar包都打到同一个jar中
使用maven-shade-plugin
在项目的pom.xml文件中加入以下插件:
然后执行Maven的package命令打包项目。
完成后,在target目录下可见生成的jar包。
使用java -jar xxxx.jar命令即可运行此jar包。仿instagram源码
在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、8位定点小数源码最小数Dubbo、Nginx等)合理利用时间学习,提升自我,不再以“没有时间”为借口!
Foliage篇-ProceduralFoliageSpawner 源码分析拓展-允许亲疏关系
要实现开放大世界的高效植被生成,ProceduralFoliageSpawner 成为首选工具。然而,原生配置的FoliageType之间缺乏关联性,使得美术在调整生成植被时面临大量工作。因此,引入亲疏关系的概念,以优化生成流程。
利用ProceduralFoliageSpawner的特性,我们构建了一个直观的配置界面,如图所示。主要属性将融入整体计算流程,以探索其作用。
分析发现,生成流程中并行与随机过程限制了直接距离检查的可能。亲疏关系的检查需在所有计算过程完成,结果确定后执行。此机会出现在CompositeTile阶段,所有Instance与Tile合并过程已结束。
通过在FoliageType中添加配置结构体与距离属性,我们优化了组件内的属性配置。在UProceduralFoliageComponent::ExecuteSimulation方法中,于CompositeTexture最后阶段,调用UProceduralFoliageTile::CheckFoliageRelatedRestrict方法,实现亲疏关系的全面筛查。
该方法利用Tile的FProceduralFoliageBroadphase四叉树管理工具,检查各个Instance的通达信近期强势板块源码配置相关性。此工具负责所有Instance的增删改查操作,包括CollisionRadius/ShadeRadius的距离剔除等。
聊聊如何避免多个jar通过maven打包成一个jar,多个同名配置文件发生覆盖问题
在开发过程中,你是否遇到过这样的问题:外部项目需要访问内部nexus私仓的jar,但私仓不对外开放,导致外部项目无法下载私仓的jar,进而导致项目无法运行。
面对这种情况,常用的解决方法有两种:一是外部项目与内部nexus的网络打通,例如通过***;二是将私仓的jar直接下载给外部项目。然而,私仓的jar可能包含依赖其他内部jar的情况,因此需要下载多个jar。为了方便,我们可能会将这些jar合并成一个大jar再给出去。但是,一些jar包会有同名的配置文件,如spring.factories,如果不进行处理,直接打包,就会出现同名配置文件覆盖的情况。
本文将探讨如何解决多个jar合并成一个jar时,多个同名配置文件覆盖的问题。
解决思路是通过maven-shade-plugin插件,利用插件的org.apache.maven.plugins.shade.resource.AppendingTransformer来处理多个jar包中存在重名的配置文件的合并。其核心是在于合并多个同名配置文件内容,而非覆盖。
示例配置如下,打包后的配置文件效果如下图所示。
然而,贵州茅台集团官网溯源码仅仅追加同名的配置内容可能无法满足所有需求,例如spring.factories文件。为了达到预期的效果,我们需要进行进一步的调整。
在尝试寻找解决方案时,我在maven-shade-plugin的官方示例中未能找到合适的方案。于是,我面临两条路:一是放弃maven-shade-plugin插件,选择其他类似的插件,如maven-assembly-plugin;二是扩展maven-shade-plugin。由于maven-assembly-plugin的扩展配置比maven-shade-plugin复杂,我最终选择了在maven-shade-plugin的基础上进行扩展。
在扩展思路中,我没有直接修改maven-shade-plugin插件,而是在maven-shade-plugin打包后的基础上,进行插件定制。具体实现思路是修改maven-shade-plugin打包后的spring.factories文件内容,将其调整为如下形式:
自定义maven插件spring-factories-merge-plugin的核心思路如下:
1. 如何读取配置文件spring.factories中key重复的内容,而不被覆盖。
如果直接使用java.util.properties的读取,当配置文件中有key重复时,如多个org.springframework.boot.autoconfigure.EnableAutoConfiguration,最后会出现value值被覆盖的情况。
解决方案是利用org.apache.commons.configuration.PropertiesConfiguration进行处理。
在项目的pom中引入GAV,读取配置示例代码如下。
2. 如何将修改后的配置文件重新写入jar。
我的思路是直接利用IO进行操作。
项目中如何配置插件的小细节是:当maven-shade-plugin和spring-factories-merge-plugin的执行生命周期都是相同阶段,例如都是在package时,则maven-shade-plugin的放置顺序需要在spring-factories-merge-plugin之前,因为spring-factories-merge-plugin是对maven-shade-plugin打包后的结果进行二次加工。如果maven-shade-plugin的放置顺序不在spring-factories-merge-plugin之前,则spring-factories-merge-plugin的执行阶段需要比maven-shade-plugin靠后,例如maven-shade-plugin在package阶段执行,则spring-factories-merge-plugin需要在install或deploy阶段执行。
打包后的效果图如下。
总结:在阅读开源框架时,我们常常关注源码,而忽略了maven插件。这次因为有打包jar的需求,我发现无论是springboot还是dubbo都集成了许多宝藏插件,例如maven-shade-plugin插件。如果以后有对maven插件的需求,推荐从springboot或dubbo中寻找,可能会带来意想不到的收获。
Java 命令 javac、java
Java命令行中的关键工具javac和java在JDK和其他版本中各有用途。javac负责编译Java源代码,而java则用于运行编译后的.class文件。
1. 编译阶段:在命令行中,当你使用javac时,如javac org/example/Demo.java,它会在当前目录或指定目录生成Demo.class文件。源文件的路径必须完整,包括.java后缀。如果Demo.java在当前目录,需要先创建相应文件夹结构。编译时,不仅当前文件会被编译,依赖的其他类也会一并处理,这时可能需要使用-classpath选项指定依赖的jar包。
2. 运行阶段:使用java命令时,运行的是.class文件,例如java org.example.Demo a 1 bc ,参数之间用空格分隔。运行时,如果类路径依赖了其他jar,如A.jar和B.jar,编译时指定A.jar,运行时则需同时指定。当项目规模大或依赖复杂时,Maven或Gradle是管理这些依赖的利器。
系统变量和环境变量在Java命令中也扮演重要角色,如-Dproperty=value用于设置系统变量,JAVA_TOOL_OPTIONS则可以全局配置编码和语言设置。使用-maven shade插件或创建空jar依赖管理包也是常见的实践。
综上,Java命令行的javac和java不仅用于文件编译和运行,还涉及系统配置和依赖管理,是Java开发中的基础工具。
自学maven教程5-常用插件介绍
在maven工程和springboot工程的开发中,常用插件起着至关重要的作用。以下是关于maven工程中的一些核心插件介绍:
1. maven-compiler-plugin:负责编译项目源代码。
2. maven-dependency-plugin:用于管理和复制依赖的jar包。
3. maven-jar-plugin:打包项目时,可以指定manifest信息,包括主类和依赖。
4. maven-antrun-plugin:运行Ant任务,适用于执行复杂的定制操作。
5. wagon-maven-plugin:实现一键部署,上传jar到远程服务器。
6. maven-shade-plugin:合并多个jar为一个,便于打包和运行。
7. maven-archetype-plugin:生成项目骨架,加速项目初始化。
8. maven-assembly-plugin:制作项目分发包,控制打包内容和格式。
9. maven-dependency-plugin:分析项目依赖,管理未声明的依赖。
. maven-enforcer-plugin:强制团队遵循规则,避免不一致和错误。
. maven-help-plugin:提供辅助信息,如环境变量、有效POM和settings。
. maven-release-plugin:自动化版本发布,管理SCM信息。
. maven-resources-plugin:处理项目资源文件,支持过滤和添加额外目录。
. maven-surefire-plugin:执行测试,支持跳过和排除测试。
. build-helper-maven-plugin:添加源码目录,支持附属构件的生成。
. exec-maven-plugin:运行本地系统程序,或在JVM中执行指定的mainClass。
. jetty-maven-plugin:简化Web应用测试,自动部署和更新。
在springboot工程中,虽然没有直接列出常用插件,但这些maven插件同样适用于springboot项目,它们可以帮助管理和构建springboot应用。例如,maven-assembly-plugin可以打包成可执行的jar,maven-war-plugin用于生成war文件,maven-shade-plugin可以优化jar包结构以减少运行时的依赖问题。
通过合理使用这些插件,开发和维护项目变得更加高效和有序。
求关于d'espairsray乐队的东西
资料DespairsRay
DéspairsRay成立于年的东京
Karyu的重金属吉他,Hizumi那低沉粗野的声音成为了乐队标志,适当的电子合成加上粗野荒诞的音乐,在空气中弥漫着,带来了强烈的冲击。
这也是一支极富视觉感受和热爱表演的乐队,他们喜欢皮质胸衣,网眼布和长长的带子,长钉,锁链的束缚,没有滑稽,只有*,他们懂得什么才是真正的摇滚,黑色的悲鸣的吉他,许多静电噪音,在Hizumi的音乐作品中充斥着,当你刚刚习惯他们的低声吟唱时,他们便开始尖叫,会让你全身心的投入。就是这样一支疯狂的乐队。黑色重金属摇滚的曲风,也许你会被他们的音乐征服。
作者: despairs的许诺 -8- : 回复此发言
--------------------------------------------------------------------------------
2 回复:资料DespairsRay
Hizumi (Vocal)
生日: 3月2日
身高: .6CM
体重: kg
血型: B
爱好: 电脑
特长: 设计
喜欢的色: 黑色
喜欢的食物: 炸药
不喜欢的食物: 苯
喜欢的饮料: Qoo
喜欢的烟: 不吸烟
喜欢的艺术家: Cabagin
喜欢的演员: Una Kowa
喜欢自己乐队的歌曲: doubt
作者: despairs的许诺 -8- : 回复此发言
--------------------------------------------------------------------------------
3 回复:资料DespairsRay
Karyu (Guitar)
生日: 月7日
血型: 0
喜欢的色: 红、黑、白
喜欢的食物: 小女孩
不喜欢的食物: 药
喜欢的饮料: 可爱的女孩子的血
喜欢的烟: 七星
喜欢的艺术家: Korn
喜欢的演员: 没有
喜欢自己乐队的歌曲: genshoku
喜欢看上去看可爱的女孩子
第一次恋爱: 任何时候
作者: despairs的许诺 -8- : 回复此发言
--------------------------------------------------------------------------------
4 回复:资料DespairsRay
Zero (Bass)
血型: 0
不喜欢的食物: 任何的海产
喜欢的饮料: 米酒
喜欢的烟: Red Lark
喜欢的艺术家: Mana-sama
喜欢的演员: 秘密
喜欢自己乐队的歌曲: 全部
喜欢*的女孩子
第一次恋爱: 今天
作者: despairs的许诺 -8- : 回复此发言
--------------------------------------------------------------------------------
5 回复:资料DespairsRay
Tsukasa (Drum)
生日: 3月2日
身高: CM
体重: kg
血型: B
爱好: 画画
喜欢的色: 黑、红、灰
喜欢的食物: 咖哩饭、奶油
不喜欢的食物: 虾
喜欢的饮料: 新鲜的
喜欢的烟: Lucky Strike
喜欢的艺术家: 自己
喜欢自己乐队的歌曲: kisei -parasite-
第一次恋爱: 幼稚园
/mv_Emule_List_.html - 类似网页
参考资料:以上结果已优化回答者:hao - 经理 五级 3- :
--------------------------------------------------------------------------------
资料DespairsRay
DéspairsRay成立于年的东京
Karyu的重金属吉他,Hizumi那低沉粗野的声音成为了乐队标志,适当的电子合成加上粗野荒诞的音乐,在空气中弥漫着,带来了强烈的冲击。
这也是一支极富视觉感受和热爱表演的乐队,他们喜欢皮质胸衣,网眼布和长长的带子,长钉,锁链的束缚,没有滑稽,只有*,他们懂得什么才是真正的摇滚,黑色的悲鸣的吉他,许多静电噪音,在Hizumi的音乐作品中充斥着,当你刚刚习惯他们的低声吟唱时,他们便开始尖叫,会让你全身心的投入。就是这样一支疯狂的乐队。黑色重金属摇滚的曲风,也许你会被他们的音乐征服。
回答者:万大宝 - 见习魔法师 二级 3- :
--------------------------------------------------------------------------------
/f?kw=d%espairsray
这里全有