博主简介:CSDN博客专家、全栈领域优质创作者、高级开发工程师、高级信息系统项目管理师、系统架构师,数学与应用数学专业,10年以上多种混合语言开发经验,从事DICOM医学影像开发领域多年,熟悉DICOM协议及其应用开发技术。我的技能涵盖了多种编程语言和技术框架:作为高级C/C++与C#开发工程师,擅长Windows系统下的.NET及C++开发技术,尤其精通MFC、DLL动态链接库、WinForm、WPF、Windows服务、WebAPI及.NET Core跨平台等技术的开发工作。熟悉Java开发,并利用业余时间学习了JavaScript、Vue等前端技术,同时自学了QT开发工具,对Python开发也有一定的了解,因此使我具备了使用多种混合语言进行开发的能力。我一直坚持撰写博客文章,记录个人的学习历程,分享编程开发相关的知识与经验,旨在为编程爱好者提供帮助和支持。通过这样的方式,我希望可以与志同道合的朋友交流探讨,共同进步,在技术的世界里不断学习和成长。如果您也热衷于技术探索,愿意一起讨论最新技术趋势或解决遇到的技术难题,欢迎随时联系。让我们携手共进,在追求卓越技术的道路上越走越远。欢迎关注、学习及合作,可提供解决方案和技术支持!
技术合作请加本人wx(注明来自csdn):xt20160813
1.1 项目对象模型(POM)定位
1.2 典型文件结构
<project>
<modelVersion>4.0.0modelVersion>
<groupId>com.companygroupId>
<artifactId>project-nameartifactId>
<version>1.0.0version>
<dependencies>...dependencies>
<build>...build>
<profiles>...profiles>
project>
2.1 坐标三要素
<groupId>com.techcorpgroupId>
<artifactId>data-serviceartifactId>
<version>2.3.1-RELEASEversion>
2.2 版本号规范
3.1 基础依赖配置
<dependencies>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-coreartifactId>
<version>5.3.8version>
<scope>compilescope>
<exclusions>
<exclusion>
<groupId>commons-logginggroupId>
<artifactId>commons-loggingartifactId>
exclusion>
exclusions>
dependency>
dependencies>
3.2 依赖作用域对照表
Scope | 编译期 | 测试期 | 运行期 | 传递性 | 典型场景 |
---|---|---|---|---|---|
compile | √ | √ | √ | √ | Spring Core |
provided | √ | √ | × | × | Servlet API |
runtime | × | √ | √ | √ | JDBC驱动 |
test | × | √ | × | × | JUnit |
3.3 依赖管理最佳实践
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.slf4jgroupId>
<artifactId>slf4j-apiartifactId>
<version>1.7.32version>
dependency>
dependencies>
dependencyManagement>
<dependency>
<groupId>com.google.guavagroupId>
<artifactId>guavaartifactId>
<version>31.0.1-jreversion>
<optional>trueoptional>
dependency>
4.1 编译器配置示例
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-compiler-pluginartifactId>
<version>3.8.1version>
<configuration>
<source>11source>
<target>11target>
<encoding>UTF-8encoding>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<version>1.18.22version>
path>
annotationProcessorPaths>
configuration>
plugin>
plugins>
build>
4.2 资源过滤配置
<resources>
<resource>
<directory>src/main/resourcesdirectory>
<filtering>truefiltering>
<includes>
<include>**/*.propertiesinclude>
<include>**/*.xmlinclude>
includes>
<excludes>
<exclude>**/test.*exclude>
excludes>
resource>
resources>
5.1 常用插件列表
5.2 自定义打包配置
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-assembly-pluginartifactId>
<version>3.3.0version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependenciesdescriptorRef>
descriptorRefs>
<archive>
<manifest>
<mainClass>com.MainAppmainClass>
manifest>
archive>
configuration>
<executions>
<execution>
<phase>packagephase>
<goals>
<goal>singlegoal>
goals>
execution>
executions>
plugin>
6.1 父POM配置示例
<groupId>com.megacorpgroupId>
<artifactId>parent-projectartifactId>
<version>1.0.0version>
<packaging>pompackaging>
<modules>
<module>web-modulemodule>
<module>service-modulemodule>
<module>dao-modulemodule>
modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>8.0.26version>
dependency>
dependencies>
dependencyManagement>
6.2 子模块配置示例
<parent>
<groupId>com.megacorpgroupId>
<artifactId>parent-projectartifactId>
<version>1.0.0version>
parent>
<artifactId>web-moduleartifactId>
<packaging>warpackaging>
<dependencies>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
dependency>
dependencies>
7.1 多环境配置示例
<profiles>
<profile>
<id>devid>
<activation>
<activeByDefault>trueactiveByDefault>
activation>
<properties>
<env>developmentenv>
properties>
profile>
<profile>
<id>prodid>
<properties>
<env>productionenv>
properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.mavengroupId>
<artifactId>tomcat7-maven-pluginartifactId>
<version>2.2version>
<configuration>
<url>http://prod-server:8080/managerurl>
configuration>
plugin>
plugins>
build>
profile>
profiles>
7.2 资源过滤与变量替换
# application-${env}.properties
db.url=jdbc:mysql://${db.host}:3306/appdb
<filters>
<filter>src/main/filters/filter-${env}.propertiesfilter>
filters>
8.1 企业级POM模板
<project>
<modelVersion>4.0.0modelVersion>
<groupId>com.enterprisegroupId>
<artifactId>core-systemartifactId>
<version>2.5.0version>
<packaging>jarpackaging>
<name>Enterprise Core Systemname>
<description>Core business logic moduledescription>
<url>http://www.enterprise.comurl>
<properties>
<java.version>11java.version>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<spring.version>5.3.9spring.version>
properties>
<dependencies>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.13.2version>
<scope>testscope>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-compiler-pluginartifactId>
<version>3.8.1version>
<configuration>
<source>${java.version}source>
<target>${java.version}target>
configuration>
plugin>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-surefire-pluginartifactId>
<version>2.22.2version>
<configuration>
<skipTests>falseskipTests>
configuration>
plugin>
plugins>
<resources>
<resource>
<directory>src/main/resourcesdirectory>
<filtering>truefiltering>
<includes>
<include>**/*.xmlinclude>
<include>**/*.propertiesinclude>
includes>
resource>
resources>
build>
<distributionManagement>
<repository>
<id>nexus-releasesid>
<url>http://nexus.enterprise.com/repository/maven-releasesurl>
repository>
<snapshotRepository>
<id>nexus-snapshotsid>
<url>http://nexus.enterprise.com/repository/maven-snapshotsurl>
snapshotRepository>
distributionManagement>
project>
9.1 依赖冲突检测
# 查看依赖树
mvn dependency:tree
# 过滤指定依赖
mvn dependency:tree -Dincludes=org.slf4j:slf4j-api
9.2 多模块构建命令
# 清理并安装所有模块
mvn clean install
# 跳过测试构建
mvn install -DskipTests
# 并行构建加速
mvn -T 4 clean install
9.3 版本锁定策略
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-dependenciesartifactId>
<version>2.5.4version>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>
最佳实践清单:
推荐学习路径:
通过本文的系统学习,您已经掌握了pom.xml文件的核心配置技巧。建议在实际项目中从简单模块开始实践,逐步构建复杂的多模块系统,最终成长为构建管理专家。