maven 的pom 文件里面可以写什么,具体内容的解答

本文详细介绍了Maven中dependencyManagement与dependencies的区别,如何配置远程仓库及其标签含义,build标签下的配置选项,包括finalName、基本标签、Resources、plugins及pluginManagement的具体用法。

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>http://maven.net.cn/content/groups/public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <id>maven-net-cn</id>
      <name>Maven China Mirror</name>
      <url>http://maven.net.cn/content/groups/public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>    
    </pluginRepository>
  </pluginRepositories>
...
</project>

解释里面的标签的意思

2.1 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的支持。

2.2 总结

我们可以在我们项目里面的pom文件里面配置 远程仓库。配置的时候在<repositories>标签和 
 <pluginRepositories> 标签里面配置。里面可以配置多个地址。

至于<pluginRepositories>,这是配置Maven从什么地方下载插件构件
(Maven的所有实际行为都由其插件完成)。该元素的内部配置和<repository>完全一样,不再解释。

3 build标签里面可以写什么

打包出来的jar包,名字是什么,我们可以在这个里面设置

3.1 finalName标签

   build目标文件的名称,默认情况为${artifactId}-${version}   ,可以自己随便写个
<build>
        <finalName>${artifactId}-${version}</finalName>
</build>

3.2 基本标签

<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

3.3 Resources标签里面的配置

里面配置的东西就是,在打包为jar包的时候,哪些资源文件就可以打包,哪些资源不打包,就是在这个标签里面进行配置的。

<resources>
			<!-- 打包包含xml文件-->
			<resource>
				<directory>src/main/java</directory>
				<includes>
					<include>**/*.xml</include>
				</includes>
				<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

                指定哪些文件将被匹配,以*作为通配符

6)excludes

               指定哪些文件将被忽略

7)testResources

               定义和resource类似,只不过在test时使用

3.4 plugins标签里面的配置

我们要在项目里面使用插件,就可以在这个里面配置我们要使用的插件

<build>
    ...
	<plugins>
		<plugin>
根据这3个属性标签定义使用哪个插件
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-jar-plugin</artifactId>
			<version>2.0</version>

设置是否加载这个插件的  扩展,默认不扩展
			<extensions>false</extensions>
是否让子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>

3.5 pluginManagement配置

pluginManagement的作用类似于denpendencyManagement,只是denpendencyManagement是用于管理项目jar包依赖,pluginManagement是用于管理plugin。与pom build里的plugins区别是,这里的plugin是列出来,然后让子pom来决定是否引用。

好的,这是一个比较常见的问题,我来为您解答。 首先,需要在 pom.xml 文件中添加以下依赖: ```xml <dependencies> <!-- Spring MVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.9.RELEASE</version> </dependency> <!-- Tomcat embedded container--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <version>2.3.4.RELEASE</version> <scope>provided</scope> </dependency> <!-- Jackson for JSON support --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.11.2</version> </dependency> </dependencies> ``` 接下来,需要创建一个 Java 配置类,用于替代传统的 XML 配置文件。在这个类中,需要使用 @EnableWebMvc 注解启用 Spring MVC,并配置一些基本的设置。以下是一个示例配置类: ```java @Configuration @EnableWebMvc @ComponentScan(basePackages = "com.example.controller") public class AppConfig implements WebMvcConfigurer { @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations("/static/"); } @Override public void configureViewResolvers(ViewResolverRegistry registry) { registry.jsp("/WEB-INF/views/", ".jsp"); } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoggingInterceptor()); } @Override public void addFormatters(FormatterRegistry registry) { // Add custom formatters here } @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) { // Add custom argument resolvers here } @Override public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> handlers) { // Add custom return value handlers here } } ``` 在这个配置类中,我们定义了一些常见的配置选项,例如映射静态资源、视图解析器、拦截器等等。您可以根据自己的需要进行相应的修改。 最后,需要编一个控制器类,用于处理 HTTP 请求和响应。以下是一个示例控制器类: ```java @Controller public class HomeController { @RequestMapping("/") public String home(Model model) { model.addAttribute("message", "Hello, World!"); return "home"; } } ``` 在这个控制器类中,我们使用 @Controller 注解标记该类,同时使用 @RequestMapping 注解标记处理请求的方法。在这个示例中,我们定义了一个处理根目录请求的方法,它会向模型中添加一条消息,并返回一个名为 "home" 的视图名称。 最后,您可以使用 Maven 的命令打包项目,并使用以下命令启动项目: ``` mvn clean package java -jar target/myapp-1.0.0.jar ``` 这样,您就可以使用无 XML 配置的 Spring MVC 应用程序进行开发了。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一写代码就开心

你的打赏将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值