「重学 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 文件如下

<properties>     
    <theme>myDefaultTheme</theme> 
</properties>

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

-P:Profiles配置文件

<profile>
   <id>test</id>
   <activation>
      <property>
         <name>env</name>
         <value>test</value>
      </property>
   </activation>
   ...
</profile>

执行 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 文件

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容