maven的pom⽂件⾥⾯可以写什么,具体内容的解答
⽬录
1 dependencyManagement 和dependencies区别
1、dependencies即使在⼦项⽬中不写该依赖项,那么⼦项⽬仍然会从⽗项⽬中继承该依赖项(全部继承)
2、dependencyManagement⾥只是声明依赖,并不实现引⼊,因此⼦项⽬需要显⽰的声明需要⽤的依赖。
如果不在⼦项⽬中声明依赖,是不会从⽗项⽬中继承下来的;只有在⼦项⽬中写了该依赖项,
并且没有指定具体版本,才会从⽗项⽬中继承该项,
并且version和scope都读取⾃⽗pom;另外如果⼦项⽬中指定了版本号,那么会使⽤⼦项⽬中指定的jar版本。
2 在POM中配置远程仓库(repositories标签和pluginRepositories标签)
前⾯我们看到超级POM配置了ID为central的远程仓库,
我们可以在POM中配置其它的远程仓库。
这样做的原因有很多,⽐如你有⼀个局域⽹的远程仓库,使⽤该仓库能⼤⼤提⾼下载速度,继⽽提⾼构建速度,也有可能你依赖的⼀个jar在central中不到,它只存在于某个特定的公共仓库,这样你也不得不添加那个远程仓库的配置。
这⾥我配置⼀个远程仓库指向中央仓库的中国镜像:
<project>
...
<repositories>
<repository>
<id>maven-net-cn</id>
<name>Maven China Mirror</name>
<url>maven/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
properties是什么文件</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>maven-net-cn</id>
<name>Maven China Mirror</name>
<url>maven/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
.
..
</project>
解释⾥⾯的标签的意思
releases标签和snapshots标签
⼀个仓库⼀般分为public(Release)仓和SNAPSHOT仓,前者存放正式版本,后者存放快照版本
我们先看⼀下<repositories>的配置,你可以在它下⾯添加多个<repository> ,
每个<repository>都有它唯⼀的ID,⼀个描述性的name,以及最重要的,远程仓库的url。
此外,<releases><enabled>true</enabled></releases>
告诉Maven可以从这个仓库下载releases版本的构件,
⽽<snapshots><enabled>false</enabled></snapshots>告诉Maven不要从这个仓库下载snapshot版本的构件。
禁⽌从公共仓库下载snapshot构件是推荐的做法,因为这些构件不稳定,且不受你控制,你应该避免使⽤
。当然,如果你想使⽤局域⽹内组织内部的仓库,你可以激活snapshot的⽀持。
总结
我们可以在我们项⽬⾥⾯的pom⽂件⾥⾯配置远程仓库。配置的时候在<repositories>标签和
<pluginRepositories> 标签⾥⾯配置。⾥⾯可以配置多个地址。
⾄于<pluginRepositories>,这是配置Maven从什么地⽅下载插件构件
(Maven的所有实际⾏为都由其插件完成)。该元素的内部配置和<repository>完全⼀样,不再解释。
3 build标签⾥⾯可以写什么
打包出来的jar包,名字是什么,我们可以在这个⾥⾯设置
finalName标签
build⽬标⽂件的名称,默认情况为${artifactId}-${version} ,可以⾃⼰随便写个
<build>
<finalName>${artifactId}-${version}</finalName>
</build>
基本标签
<build>
<defaultGoal>install</defaultGoal>
<directory>${basedir}/target</directory>
<finalName>${artifactId}-${version}</finalName>
<filters>
<filter>filters/filter1.properties</filter>
</filters>
.
..
</build>
1)defaultGoal
执⾏build任务时,如果没有指定⽬标,将使⽤的默认值。
如上配置:在命令⾏中执⾏mvn,则相当于执⾏mvn install
2)directory
build⽬标⽂件的存放⽬录,默认在${basedir}/target⽬录
3)finalName
build⽬标⽂件的名称,默认情况为${artifactId}-${version}
4)filter
定义*.properties⽂件,包含⼀个properties列表,该列表会应⽤到⽀持filter的resources中。
也就是说,定义在filter的⽂件中的name=value键值对,会在build时代替${name}值应⽤到resources中。 maven的默认filter⽂件夹为${basedir}/src/main/filters
jquery在线免费学习技术Resources标签⾥⾯的配置
⾥⾯配置的东西就是,在打包为jar包的时候,哪些资源⽂件就可以打包,哪些资源不打包,就是在这个标签⾥⾯进⾏配置的。
<resources>
<!-- 打包包含xml⽂件-->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
php explode 对象类型<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>static/**</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>static/**</include>
</includes>
</resource>
<resource>
<directory>src/main/webapp</directory>
<filtering>false</filtering>
</resource>
</resources>
1)resources
⼀个resources元素的列表。每⼀个都描述与项⽬关联的⽂件是什么和在哪⾥
2)targetPath
指定build后的resource存放的⽂件夹,默认是basedir。
通常被打包在jar中的resources的⽬标路径是META-INF
3)filtering
true/false,表⽰为这个resource,filter是否激活
4)directory
定义resource⽂件所在的⽂件夹,默认为${basedir}/src/main/resources
5)includes
shellclassinfo指定哪些⽂件将被匹配,以*作为通配符
6)excludes
指定哪些⽂件将被忽略
7)testResources
定义和resource类似,只不过在test时使⽤
plugins标签⾥⾯的配置
我们要在项⽬⾥⾯使⽤插件,就可以在这个⾥⾯配置我们要使⽤的插件
<build>
...
<plugins>
<plugin>
根据这3个属性标签定义使⽤哪个插件
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.0</version>
设置是否加载这个插件的扩展,默认不扩展
<extensions>false</extensions>
svg无功补偿品牌是否让⼦pom继承,ture or false 默认为true.
<inherited>true</inherited>
配置该plugin期望得到的properties
<configuration>
<classifier>test</classifier>
</configuration>
与pom基础的dependencies的结构和功能都相同,只是plugin的dependencies⽤于plugin,
织梦模板下载 一品资源网板
⽽pom的denpendencies⽤于项⽬本⾝。在plugin的dependencies主要⽤于改变plugin
原来的dependencies,例如排除⼀些⽤不到的dependency或者修改dependency的版本等
<dependencies>...</dependencies>
plugin也有很多个⽬标,每个⽬标具有不同的配置,executions就是设定plugin的⽬标,
<executions>...</executions>
</plugin>
</plugins>
</build>
pluginManagement配置
pluginManagement的作⽤类似于denpendencyManagement,只是denpendencyManagement是⽤于管理项⽬jar包依
赖,pluginManagement是⽤于管理plugin。与pom build⾥的plugins区别是,这⾥的plugin是列出来,然后让⼦pom来决定是否引⽤。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论