「重学 Maven」1. 命令创建工程

maven 创建工程命令

mvn archetype:generate -DgroupId=com.zhss.maven -DartifactId=maven-first-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

分解一下

  • mvn archetype:generate :archetype 是一个maven 插件,本意是原型,这里可以理解为模板,整体就是基于模板来生成项目。
  • -DgroupId=com.zhss.maven :-D 的意思如下,这里就是设置 groupId 这个属性值为 com.zhss.maven
  • -DartifactId=maven-first-app :同上
  • -DarchetypeArtifactId=maven-archetype-quickstart :同上
  • -DinteractiveMode=false:表示maven是否需要和用户交互以获得输入

-D & -P

-D:用来设置一些属性值
比如 pom 文件如下

     
    myDefaultTheme 

mvn -Dtheme=halloween clean package 就会覆盖 theme 原先 myDefaultTheme 值,变成 halloween。

-P:Profiles配置文件


   test
   
      
         env
         test
      
   
   ...

执行 mvn test -Penv=test 执行 test 的配置文件

maven的约定

  • src/main/java 目录里存放的是 java 源码
  • src/test/java 目录里包含了测试代码
  • pom 文件是maven核心配置文件,是这个项目的 ProjectObjectModel。


    image.png

打包

运行 mvn clean package 命令


image.png

如上,可以看到 maven 为我们做了这些操作:

  1. 从 aliyun 的仓库下载了 junit 的jar包和pom文件
  2. 执行了一些插件的操作
    1. clean:Deleting /Users/ethan/code/java/ruyuan/maven-first-app/target。删除target目录
    2. resources:skip non existing resourceDirectory /Users/ethan/code/java/ruyuan/maven-first-app/src/main/resources。没有资源文件,就没有执行
    3. compile:Compiling 1 source file to /Users/ethan/code/java/ruyuan/maven-first-app/target/classes:将 java 文件编译成 class 文件。
    4. testResources:skip non existing resourceDirectory /Users/ethan/code/java/ruyuan/maven-first-app/src/test/resources。没有资源文件,就没有执行
    5. testCompile:Compiling 1 source file to /Users/ethan/code/java/ruyuan/maven-first-app/target/test-classes。将 test 中的 java 文件编译成 class 文件。
    6. test:跑单元测试
    7. jar:/Users/ethan/code/java/ruyuan/maven-first-app/target/maven-first-app-1.0-SNAPSHOT.jar。打成 jar 包。

注意一下:compile 的步骤中都有一条意思是 “Changes detected - recompiling the module!”。意思就是检测到文件变更,需要重新编译这个模块。也就是说如果文件没有变更,就不会重复编译。

运行 jar 包

java -cp target/maven-first-app-1.0-SNAPSHOT.jar com.zhss.maven.App

-cp 是 classpath 的意思,意思从这个 jar 包里找到 class 文件

你可能感兴趣的:(「重学 Maven」1. 命令创建工程)