imooc 项目管理利器 maven 课程笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_34524528/article/details/81491171

https://www.imooc.com/learn/443

目录结构


install 之后,其他项目就可以正常地 import 了。


-DgroupId 反写域名 +项目名

-DartifactId 模块名(用连字符)

-Dversioin 版本号

-Dpackage 反写域名+项目名+模块包名


groupId artifactId 合成一个依赖的“坐标”

仓库和镜像仓库的地址和本地仓库路径 可以在 $MAVEN_HOME/conf/settings.xml 里配置

Eclipse 中的 Maven

问题:Perhaps you are running on a JRE rather than a JDK?

解决:在 BuildPath - Add library - System JRE 选择系统的 JRE运行环境 即可成功构建


插件:maven.apache.org/plugins/index.html

       <build>

              <plugins>

                     <plugin>

                           <groupId>org.apache.maven.plugins</groupId>

                           <artifactId>maven-source-plugin</artifactId>

                           <version>2.4</version>

                           <executions>

                                  <execution>

                                         <phase>package</phase>

                                         <goals>

                                                <goal>jar-no-fork</goal>

                                         </goals>

                                  </execution>

                           </executions>

                     </plugin>

              </plugins>

       </build>


Maven 项目和实际项目并不是一一对应的关系,因为 Maven 体现的是模块化的概念,所以一个实际项目往往被划分成很多的模块。

snapshot  alpha beta release GA 版本号的意义

http://www.blogjava.net/RomulusW/archive/2008/05/04/197985.html

https://blog.csdn.net/zmken497300/article/details/51707967/

<exclusion> 排除传递依赖

<dependenciesManagement> 管理依赖继承关系

<parent> 子模块继承

<modules> 指定模块进行编译


<scope> 依赖范围

http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope

开发中,如果需要使用框架,则需要将框架的 jar 包引入到项目的classpath路径中。Maven提供了三种classpath :编译,测试,运行

 Servlet

 JDBC

import http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Importing_Dependencies


依赖传递

山鸡-》浩南-》B哥

修改Maven Settings 文件

https://www.cnblogs.com/30go/p/7154298.html

<profile>  

    <id>jdk-1.8</id>  

    <activation>  

        <activeByDefault>true</activeByDefault>  

        <jdk>1.8</jdk>  

    </activation>  

    <properties>  

        <maven.compiler.source>1.8</maven.compiler.source>  

        <maven.compiler.target>1.8</maven.compiler.target>  

        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>  

    </properties>  

</profile>

如此就创建Maven项目识,就不需要手动修改BuildPath 中的 JDK版本了

exclusion 包groupId ,artifactId,不包含 version


依赖冲突

中心库

http://mvnrepository.com/tags/maven

commons-io

http://mvnrepository.com/artifact/commons-io/commons-io

山鸡-》浩南-》B哥

浩南->commons-io2.0

B哥->commons-io2.4

则 山鸡得到的是commons-io2.0,因为楠哥离山鸡更近

如,山鸡同时依赖南哥和B哥,南哥(2.0)和B哥(2.4)没有依赖关系,则哪个dependency 在前面,就用哪个版本的jar


聚合和继承

<packaging>pom</packaging>

...

       <modules>

              <module>../hongxing-bge</module>

              <module>../hongxing-nange</module>

              <module>../hongxing-shanji</module>

       </modules>

运行 clean install 实现继承

由于三个人都有Junit依赖,所以可以将junit 抽取形成父依赖

新建 hongxing-parent maven 项目pom 关键如下:

  <packaging>pom</packaging>

  <name>hongxing-parent</name>

  <url>http://maven.apache.org</url>

  <properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <junit-version>3.8.1</junit-version>

  </properties>

  

  <dependencyManagement>

  <dependencies>

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version>${junit-version}</version>

      <scope>test</scope>

    </dependency>

  </dependencies>

    

  </dependencyManagement>

“子”项目引用pom如下,新增parent标签包裹父项目的坐标,依赖列表中删除version 和 scope 标签:

        <parent>

              <groupId>com.hongxing</groupId>

              <artifactId>hongxing-parent</artifactId>

              <version>0.0.1-SNAPSHOT</version>

       </parent>

       <dependencies>

              <dependency>

                     <groupId>junit</groupId>

                     <artifactId>junit</artifactId>

              </dependency>

              <dependency>

                     <groupId>commons-io</groupId>

                     <artifactId>commons-io</artifactId>

                     <version>2.4</version>

              </dependency>

       </dependencies>

如果不删除dependency 中的version 和 scope ,则 以子覆盖父


新建 Web 项目

一、新建 maven  模板不用之前的quickstart 而是 webapp,然后去中央仓库找到 servlet API 添加进来,如下:

<dependencies>

              <dependency>

                     <groupId>junit</groupId>

                     <artifactId>junit</artifactId>

                     <version>4.10</version>

                     <scope>test</scope>

              </dependency>

              <!--  https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->

              <dependency>

                     <groupId>javax.servlet</groupId>

                     <artifactId>javax.servlet-api</artifactId>

                     <version>3.1.0</version>

                     <!-- 只在编译和测试时运行 -->

                     <scope>provided</scope>

              </dependency>

       </dependencies>

二、creat floder 创建 src/main/java 和 src/test/java src/test/resources

三、检查 properties -> buildpatch -> scource 确保output folder 都是  项目/target/classes

四、检查 properties -> buildpatch -> project facets 勾选了 Dynamic Web Module

五、修改部署时的默认配置

右键项目 properties-> depolyment assembly  将 src/test  下的内容都remove掉。

五步完成即创建成功。使用package 命令将其打包并发布到指定的Web容器中,就可以在浏览器中访问了.

引入jetty 

<build>

              <finalName>webdemo</finalName>

              <plugins>

                     <plugin>

                           <!--  https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-maven-plugin -->

                                  <groupId>org.eclipse.jetty</groupId>

                                  <artifactId>jetty-maven-plugin</artifactId>

                                  <version>9.4.12.RC1</version>

                     </plugin>

              </plugins>

       </build>

Run As -> Maven Build  -> jetty:run

成功运行后,访问localhost:8080即可看到 Hello World! 内容。

不想每次输入 jetty:run,打包成功后使用jetty:run来运行jetty服务, 可以修改pom plugin 的execution标签,如下:

<build>

              <finalName>webdemo</finalName>

              <plugins>

                     <plugin>

                           <!--  https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-maven-plugin -->

                           <groupId>org.eclipse.jetty</groupId>

                           <artifactId>jetty-maven-plugin</artifactId>

                           <version>9.4.11.v20180605</version>

                           <executions>

                                  <execution>

                                         <!-- 打包成功后使用jetty:run来运行jetty服务 -->

                                         <phase>package</phase>

                                         <goals>

                                                <goal>run</goal>

                                         </goals>

                                  </execution>

                           </executions>

                     </plugin>

              </plugins>

       </build>

注意关掉之前正在运行的jetty ,否则会报端口占用的错误。

Tomcat

使用tomcat 也是,直接替换Jetty 的坐标即可

https://tomcat.apache.org/maven-plugin-2.2/

https://tomcat.apache.org/

<plugin>

  <groupId>org.apache.tomcat.maven</groupId>

  <artifactId>tomcat7-maven-plugin</artifactId>

  <version>2.2</version>

</plugin>

or

<plugin>

  <groupId>org.apache.tomcat.maven</groupId>

  <artifactId>tomcat6-maven-plugin</artifactId>

  <version>2.2</version>

</plugin>

<build>

              <finalName>webdemo</finalName>

              <plugins>

                     <plugin>

                           <!--  https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-maven-plugin

                                  <groupId>org.eclipse.jetty</groupId>  <artifactId>jetty-maven-plugin</artifactId>

                                  <version>9.4.11.v20180605</version> -->

                           <groupId>org.apache.tomcat.maven</groupId>

                           <artifactId>tomcat7-maven-plugin</artifactId>

                           <version>2.2</version>

                           <executions>

                                  <execution>

                                         <!-- 打包成功后使用jetty:run来运行jetty服务 -->

                                         <phase>package</phase>

                                         <goals>

                                                <goal>run</goal>

                                         </goals>

                                  </execution>

                           </executions>

                     </plugin>

              </plugins>

       </build>

    

运行成功 http://localhost:8080/webdemo/ 


课程总结

猜你喜欢

转载自blog.csdn.net/sinat_34524528/article/details/81491171
今日推荐