MAVEN在IDEA中的应用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/caozp913/article/details/101171765

idea集成maven插件

settings-->输入maven-->选择本地maven安装路径,配置文件以及本地仓库的路径:

创建非web的maven工程

创建工程-->选择maven,下一步之后填写项目的坐标(类似于全类名),下一步之后再次确认:

创建出来的界面如下:

在该工程结构中,缺少一些目录,需要手动添加并设置。

添加test中的resources,然后右键选择Mark Directory As将其设置为相应的配置目录。

使用模板创建web的maven工程

创建工程-->选择maven-->勾选这个:

在选择模板时选中这一项:

创建好的界面如下:

仍然需要补齐目录:

注意:maven在创建完web工程后会有一个加载插件的过程,比较缓慢,可以在创建的倒数第二步加上一个键值对archetypeCatalog:internal

注意,刚创建好maven工程,会有一个部署的过程。特别是,如果本地仓库里是空的,那么idea会自动帮我们从中央仓库下载基本的jar包,这就需要耗费一些时间。

maven工程的一键构建

创建了maven之后,可以在idea中进行一键构建

最常用的就是打包。打包完的

如果列表中没有的,可以在方框的图标中来填写执行。比如:tomcat:run

相关配置和注意事项

要尽可能保持jdk的版本(以jdk9为例)和maven支持的jdk版本保持一致。在pom.xml上配置maven的默认版本如下:(和dependencies平级)

<properties>
    <maven.compiler.source>9</maven.compiler.source>
    <maven.compiler.target>9</maven.compiler.target>
</properties>

有些地方不支持上面的方式,还有另外一种配置插件的方式:(和dependencies平级)

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <!--编译时用什么版本-->
                <target>9</target>
                <!--运行时用什么版本-->
                <source>9</source>
                <!--还可以设置编码方式-->
               <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>

注意:通常编译失败就是因为版本的问题!!!!!!!!!!!!!!!!!!!!!!

这个配置的是这里的版本

要保持这里的版本和工程所用的jdk版本,还有tomcat版本保持一致或者兼容

maven默认使用的是tomcat6版本,如果使用的jdk版本过高,运行将会报错。如果想使用高版本的jdk,就需要配置提高tomcat的版本(以jdk9为例,要支持tomcat7+版本),添加如下插件:

运行时需要输入tomcat7:run才是运行新配置的tomcat

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <!--重新配置端口-->
            <configuration>
                <port>8888</port>
            </configuration>
        </plugin>
    </plugins>
</build>

JAR包冲突

当我们导入一个jar包坐标的时候,会自动将该jar包所依赖的所有jar包都导入,这样就会出现一个问题,就是可能有多个包都依赖同一个包。假如要导入的多个jar包都依赖于同一个jar包,并且版本不同,那么,最终被maven使用的是哪个版本呢?

第一种方式:谁写在前面,就用谁。

第二种方式:maven中的依赖包分为直接依赖包和传递依赖包,直接依赖包优先于传递依赖包。

  • 传递依赖包:导入一个包时被动导入的依赖包
  • 直接依赖包:直接导入的包,直接依赖包会覆盖传递依赖包
  • 但是如果传递依赖包在dependencyManagement标签内,就会被锁定,无法再被覆盖。比如
<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
	</dependencies>
</dependencyManagement>

但是要注意的是,dependencyManagement标签只是锁定版本,并没有实际导入jar包。仍然需要复制一份到该标签外来进行导入。

第三种方式,推荐使用。使用exclusions标签直接排除某个版本的包,比如:

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>${spring.version}</version>
  <exclusions>
    <exclusion>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
    </exclusion>
  </exclusions>
</dependency>

设置jar包的作用范围

可以限制jar包的依赖范围

比如设置jar包的作用域,使其只在编译时作用

<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <!--添加作用域-->
      <scope>provided</scope>
</dependency>

猜你喜欢

转载自blog.csdn.net/caozp913/article/details/101171765
今日推荐