maven 配置文件详解

Maven 能够实现自动化构建是和它的内部原理分不开的, Maven 是如何实现自动化构建的需要了解下面几个方面

①POM

Project Object Model:项目对象模型。将 Java 工程的相关信息封装为对象作为便于操作和管理的模型。 Maven 工程的核心配置。

②约定的目录结构

Hello
        |---src
        |---|---main
        |---|---|---java
        |---|---|---resources
        |---|---test
        |---|---|---java
        |---|---|---resources
        |---pom.xml
 

③坐标

使用如下三个向量在 Maven 的仓库中唯一的确定一个 Maven 工程。

[1]groupid:公司或组织的域名倒序+当前项目名称

[2]artifactId:当前项目的模块名称

[3]version:当前模块的版本 

    com.hd.cyz.maven
    Hello
    0.0.1-SNAPSHOT

④依赖管理


            junit
            junit
            4.0

       test

就是使用 dependency 标签指定被依赖 jar 包的坐标就可以了。

上面的依赖信息中除了目标 jar 包的坐标还有一个 scope 设置,这是依赖的范围。依赖的范 围有几个可选值,我们用得到的是:compile、test、provided 三个。

 
  compile test provided
主程序 ×
测试程序
参与部署 × ×

         依赖的传递性  scope是compile具有传递性  其他没有

         依赖的排除

org.apache.hadoop

zookeeper

3.3.1

     

      jline

      jline

       

在POM中的元素中设置。value的值可以用作${someVar}

⑤仓库管理

⑥生命周期

⑦插件和目标

⑧继承

        为什么需要继承:一个project中有许多 module  每个module中都需要重复的依赖时

        创建父工程和创建一般的 Java 工程操作一致,唯一需要注意的是:打包方式处要设置为 pom。

    如:父类pom


4.0.0
com.company
web-parent
0.0.1-SNAPSHOT
pom


4.12
4.1.3.RELEASE
3.2.8
1.2.2
1.2.15
5.1.32
1.6.4
2.4.2
1.0.9
4.3.5
1.2
2.5
2.0
2.5
3.3.2
1.3.2
3.3
3.4.2-fix
0.9.1
1.3.1
2.7.2
4.10.3






joda-time
joda-time
${joda-time.version}



org.apache.commons
commons-lang3
${commons-lang3.version}


org.apache.commons
commons-io
${commons-io.version}


commons-net
commons-net
${commons-net.version}



com.fasterxml.jackson.core
jackson-databind
${jackson.version}



org.apache.httpcomponents
httpclient
${httpclient.version}



junit
junit
${junit.version}
test



org.slf4j
slf4j-log4j12
${slf4j.version}



org.mybatis
mybatis
${mybatis.version}


org.mybatis
mybatis-spring
${mybatis.spring.version}


com.github.miemiedev
mybatis-paginator
${mybatis.paginator.version}


com.github.pagehelper
pagehelper
${pagehelper.version}



mysql
mysql-connector-java
${mysql.version}



com.alibaba
druid
${druid.version}



org.springframework
spring-context
${spring.version}


org.springframework
spring-beans
${spring.version}


org.springframework
spring-webmvc
${spring.version}


org.springframework
spring-jdbc
${spring.version}


org.springframework
spring-aspects
${spring.version}



jstl
jstl
${jstl.version}


javax.servlet
servlet-api
${servlet-api.version}
provided


javax.servlet
jsp-api
${jsp-api.version}
provided



commons-fileupload
commons-fileupload
${commons-fileupload.version}



redis.clients
jedis
${jedis.version}



org.apache.solr
solr-solrj
${solrj.version}




        ${project.artifactId}
        
            
            
                org.apache.maven.plugins
                maven-resources-plugin
                2.7
                
                    UTF-8
                
            
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.2
                
                    1.7
                    1.7
                    UTF-8
                
            
        
        
            
                
                
                    org.apache.tomcat.maven
                    tomcat7-maven-plugin
                    2.2
                
            
        
    t>

子类只需:


4.0.0

com.company
web-parent
0.0.1-SNAPSHOT

com.company
web-common
0.0.1-SNAPSHOT

 我们需要添加的部分



joda-time
joda-time



org.apache.commons
commons-lang3


org.apache.commons
commons-io


commons-net
commons-net



com.fasterxml.jackson.core
jackson-databind



org.apache.httpcomponents
httpclient



junit
junit
test



org.slf4j
slf4j-log4j12

https://blog.csdn.net/gyshun/article/details/82052280 

⑨聚合

12.1 为什么要使用聚合? 将多个工程拆分为模块后,需要手动逐个安装到仓库后依赖才能够生效。修改源码后也需要逐个手动进 行 clean 操作。而使用了聚合之后就可以批量进行 Maven 工程的安装、清理工作。

12.2 如何配置聚合? 在总的聚合工程中使用 modules/module 标签组合,指定模块工程的相对路径即可


		../Hello
		../HelloFriend
		../MakeFriends
	

 

你可能感兴趣的:(maven)