高度自定义maven配置
现在项目是Ant管理的,要将其改成Maven,不需要自动化,可以接受完全重写。但是有几个问题稍微看了下文档,不得门而入。求指点(并非求完整解决方案,只是想得到点提示)。
自定义build逻辑,比如先把jsp编译成class再打包成jar,而不是直接发布jsp文件,由tomcat当场编译。
自定义目录结构,因为是一个比较大的项目且很多模块,但是共同一套配置文件目录结构等。
最简单的私有Maven repo要如何搭建(期望是按照某个目录结构向外发布http/ftp访问即可,不需要web端去可视化管理)
谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(17)
@南湖船老大 对了,你知不知道maven是否有只需要http/ftp和文件目录结构就能部署出来的repo,我不需要web界面去管理,手工即可。
回复
@乌龟壳 : 不太理解你这个需求是什么
回复
@南湖船老大 : 就是你说的私有repo啊,mvn私源,公司内项目间共享的源,不能开放出去的
回复
@乌龟壳 : nexus,jfrog都可以的,都有web界面,很方便管理(主要是配置权限和代理仓库地址)。一次配置后后面就不用再管了
回复
@南湖船老大 : 好的
@南湖船老大
通过你的举例,我特意看了mvn的plugin开发的文档,发现maven对自己的定义是
所以我想难怪各种自定义逻辑的工具在mvn文档里找不到,原来本来就是要开发的。
看来要考虑下是否值得把Ant那套编译逻辑用mvn插件的方式重构出来,这样就能用上mvn了。
说真的Ant和Ivy太老了,很多东西实现得不好,不知道maven怎样。
谢谢。
引用来自“乌龟壳”的评论
@南湖船老大
我想再明确地说一下场景,不是具体的jsp编译成class什么的,比如我手头上有一个自己开发的模板引擎,我需要
第一步把模板引擎编译出来
第二步用这个编译出来的模板引擎编译*.tmpl文件成java
第三步把java编译成class打包成jar
第四部把jar放到最终的目录
我想咨询的是,类似这些需要自定义化的逻辑,mvn大概是怎样支持的,我只需要一些关键字就好了。比如mvn是否支持直接调用jar,是否可以像ant一样配置一些简单的逻辑等。
当然不是问题啦,maven是Java写的,当然有插件机制啦。写个maven插件又不复杂,套路都在那了
@南湖船老大
我想再明确地说一下场景,不是具体的jsp编译成class什么的,比如我手头上有一个自己开发的模板引擎,我需要
第一步把模板引擎编译出来
第二步用这个编译出来的模板引擎编译*.tmpl文件成java
第三步把java编译成class打包成jar
第四部把jar放到最终的目录
我想咨询的是,类似这些需要自定义化的逻辑,mvn大概是怎样支持的,我只需要一些关键字就好了。比如mvn是否支持直接调用jar,是否可以像ant一样配置一些简单的逻辑等。
@南湖船老大
它的标准要遵守可以,但始终问题要解决,预编译jsp只是我抽象出来方便大家理解的场景而已,实际要做的是真正不预编译跑不起来的功能。
maven的哲学是Convention over Configuration ,建议还是按照maven的标准来,不然还不如就继续用ant,这样的成本还低一些
回复
@乌龟壳 : 我个人觉着差别还是很大的 重启服务的成本 以及风险明显比那个高很多
回复
@乌龟壳 : 可以接受完全重写的话 完全可以采取前后端分离来做 就没这些问题了
先不看具体内容,补充一下,我说的重写是重写build不是项目,现在项目用ivy管理依赖,并非放到lib什么的
你刻意没谈jsp编译成class,证明你不熟,你熟悉js minify,所以给了个插件的例子。我可不可以理解成mvn自定义编译流程必须学怎么写mvn插件?没法像Ant一样把编译流程也可以xml脚本化?
无论js minify还是jsp编译成class,我都是举例子而已,真正想问的是mvn对编译流程的支持,除了写插件还有哪些?当然你说mvn可以嵌入ant,那我现在ant一套流程都下来了,只是没有mvn那么多功能,感觉没必要换。
感觉你根本没理解什么是maven。。。我使用中根本没遇到你提到的疑问
jsp编译class是什么鬼。。没看懂,JSP不需要什么编译,这是容器的事情。。就算是你编译好了,你也脱离不了servlet容器,没多大意义。
这根本就不叫事儿。maven搭配NPM和最热的vue前端框架整合在一起搞事,也不算啥事。Java开发的系统和工具,如果连这点扩展性都不到,还配叫Java么,Java还配稳坐编程语言老大的位置么。。你说的东西maven当然支持啦!,看示例配置:
ant转maven不是分分钟的事情么,这种事情我干的不少,传统的没有任何包管理的全扔lib下的项目,200多个jar,我一天时间就能搞定。maven和某个号称最好的语言的包管理不同,maven对代码没有任何侵入性,代码一行改动都不需要,唯一需要的就是目录结构做轻微调整(甚至不调整也可以)。不存在你说的什么“重写”,真正的0侵入,反正就是不涉及任何代码修改,只需要配置下maven的POM而已。
maven本来就支持自定义目录结构啥的,只不过约定在先,你要不按你约定来也可以啊。
如果系统中有很多jar已经招不到maven坐标了,自己给它安一个坐标,上传到私服就能搞定。我在12年之前写的Java代码都是传统方式,没有任何依赖管理。12年后,老项目转maven,轻轻松松毫无障碍。