资讯专栏INFORMATION COLUMN

Maven 工程实践

paraller / 1174人阅读

摘要:前言虽然势头很猛,但是依然是项目构建的优先选择,本文简要介绍一些工程实践多模块如果工程比较复杂,或者预期后续会变的比较复杂,可以将工程分成多个模块,常用的分模块的方法,核心代码,工具,服务,前端在顶层文件中声明工程包含的各个模块在子模块文件

前言

虽然 Gradle 势头很猛,但是 Maven 依然是 Java 项目构建的优先选择,本文简要介绍一些 Maven 工程实践

多模块(multiple module)

如果工程比较复杂,或者预期后续会变的比较复杂,可以将工程分成多个模块,常用的分模块的方法:

core,核心代码)

util/common,工具

service,服务

web/front,web 前端

在 root(顶层)pom 文件中声明工程包含的各个模块


    ...
    pom

    
        core
        service
        util
        web
    

在子模块 pom 文件中声明 parent pom


    ...
    
        com.aachuxing.gov.report
        ...
        1.0
    
插件

使用 Maven 离不开各种各样的插件,简单介绍一下常用的插件,详细使用说明可以参考官方文档,或者直接 google/baidu,在声明插件的时候推荐:

将 属性值(jdk.version)定义在 properties 标签中

将 build 标签声明在 root pom 中

maven-compiler-plugin

maven-compiler-plugin 可以指定 jdk 版本,推荐设置 jdk8 以上版本


    ...
    
        1.8
    

    
        
            
                
                    org.apache.maven.plugins
                    maven-compiler-plugin
                    
                        ${jdk.version}
                        ${jdk.version}
                        ${jdk.version}
                    
                
            
        
    
maven-surefire-plugin

maven-surefire-plugin 用来排除一些你不想在持续集成中运行 test case,它们可能仅仅是你用来测试你的代码,比如测试 dao 中 SQL 书写是否有问题


    ...
    
        
            
                org.apache.maven.plugins
                maven-surefire-plugin
                2.19.1
                
                    
                        **/XXXTest.java
                    
                
            
        
    
maven-assembly-plugin

通常一个 Java 工程除了 jar 包之外还有各种各样的文件:shell 脚本,properties(属性)文件,数据文件(json, xml),使用 maven-assembly-plugin 可以对工程打包部署做深度定制


    ...
    
        
            
                org.apache.maven.plugins
                maven-assembly-plugin
                2.6
                
                    
                        make-assembly
                        package
                        
                            single
                        
                    
                
                
                    
                        src/main/assembly/assembly1.xml
                        src/main/assembly/assembly2.xml
                        src/main/assembly/assembly3.xml
                    
                
            
        
    

assembly.xml 配置文件用于配置具体的打包过程,在 descriptors 标签中可以指定多个配置文件,实现一套代码打出多个 "渠道包"

下面是一个 assembly.xml 文件示例:


    ${id}
    
        tar.gz
    
    false
    
        
            src/main/assembly/bin
            bin
            
                startup.sh
                shutdown.sh
            
            0755
        
        
            ${project.build.directory}/classes
            /
            
                config.properties
                log4j2.xml
            
            0644
        
    
    
        
            lib
        
    

formats,通过后缀名指定打包文件格式,tar.gz, zip, war .etc

fileSets,指定哪些文件被打到包里头

maven-dependency-plugin

maven-dependency-plugin 用于管理依赖,一个应用场景是将依赖的 jar 包解开合并到工程中


    
        
            
                maven-dependency-plugin
                
                    
                        prepare-package
                        
                            unpack
                        
                        
                            
                                
                                    com.compony.xxx
                                    yyy
                                
                            
                            ${project.build.outputDirectory}
                        
                    
                
            
        
    
总结

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66874.html

相关文章

  • maven最佳实践

    摘要:是一个优秀的项目管理工具。目前市面上优秀的书籍就是实战。就表示将依赖的包路径写入到文件中。但要注意,写入的只是包的名字,所以运行的包要和包要在同一个目录下。此外,去搜索想要的包的配置。这个时候去官网下载,找里面的文件配置。 maven是一个优秀的项目管理工具。目前市面上优秀的书籍就是《maven实战》。依旧不能解决问题:1.maven内置变量Maven内置变量说明: ${basedi...

    honmaple 评论0 收藏0
  • SpringBoot多模块项目实践(Multi-Module)

    摘要:接下来,本文将重点阐述在环境的多模块构建过程。本项目传送门一创建聚合父工程首先使用来快速创建好一个工程。然后在里面声明该父工程包含的子模块。 序言:比起传统复杂的单体工程,使用Maven的多模块配置,可以帮助项目划分模块,鼓励重用,防止POM变得过于庞大,方便某个模块的构建,而不用每次都构建整个项目,并且使得针对某个模块的特殊控制更为方便。接下来,本文将重点阐述SpringBoot在M...

    renweihub 评论0 收藏0
  • Spring Boot 2 快速教程:WebFlux 快速入门(二)

    摘要:响应式编程是基于异步和事件驱动的非阻塞程序,只是垂直通过在内启动少量线程扩展,而不是水平通过集群扩展。三特性常用的生产的特性如下响应式编程模型适用性内嵌容器组件还有对日志消息测试及扩展等支持。 摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 02:WebFlux 快速入门实践 文章工程: JDK...

    gaara 评论0 收藏0
  • 工具集核心教程 | 第二篇: IDEA入门到进阶(图文并茂)

    摘要:重度强迫症患者取消大小写敏感,让自动完成更齐全。如何为当前项目工程添加多个模块啊答对着工程右键选择通常选择,如图写在最后欢迎关注喜欢和点赞后续将推出更多的工具集教程,敬请期待。公众号回复面试,领取面试实战学习资源。 showImg(https://segmentfault.com/img/remote/1460000018862588); 前言:IntelliJ IDEA 如果说Int...

    skinner 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<