Maven-手动创建Maven项目

客官°小女子只卖身不卖艺 2022-03-17 10:44 405阅读 0赞

手动创建Maven项目,了解Maven项目架构 — 约定优于配置

首先创建一个文件夹用来存放项目:

在 D盘根目录下创建一个maven文件夹

  1. D:\\maven

创建第一项目HelloWorld

  1. D:\\maven\\HelloWorld //以下称该路径为项目路径

在项目路径下创建pom.xml文件, 内容如下

<?xml version=”1.0” encoding=”utf-8”?>



4.0.0
com.rogueq.mvnbook
hello-world
1.0-SNAPSHOT
Maven Hello World Project

同时创建文件夹:

D:\maven\HelloWorld\src\main\java

src\main\java为Maven默认的源代码路径

在编写一个Java类 HelloWorld.java

package com.rogueq.mvnbook.helloworld;

public class HelloWorld {

  1. public String sayHello() \{
  2. return "Hello Maven";
  3. \}
  4. public static void main() \{
  5. System.out.println(new HelloWorld().sayHello());
  6. \}

}

20190223213849317.png

在项目路径下,通过命令行窗口执行 mvn clean compile (需要已安装mvn,并配置了maven环境变量)

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h6cF9mb3JldmVy_size_16_color_FFFFFF_t_70

此时在项目路径下会生产一个target文件夹, 该文件夹下保存的就是编译后的问题。

20190223214145659.png

测试:

在项目路径下文件文件夹:

D:\maven\HelloWorld\src\test\java

src\test\java为Maven默认的测试代码路径

添加JUnit依赖:

<?xml version=”1.0” encoding=”utf-8”?>



4.0.0
com.rogueq.mvnbook
hello-world
1.0-SNAPSHOT
Maven Hello World Project



junit
junit
4.7
test


编写测试类HelloWorldTest:

package com.rogueq.mvnbook.helloworld;

import static org.junit.Assert.assertEquals;
import org.junit.Test;

public class HelloWorldTest {

  1. @Test
  2. public void testSayHello() \{
  3. HelloWorld helloWorld = new HelloWorld();
  4. String result = helloWorld.sayHello();
  5. assertEquals("Hello Maven", result);
  6. \}

}

20190224203608683.png

在项目路径下执行 mvn clean test 命令:

maven自动下载junit依赖包(如果本地没有)

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h6cF9mb3JldmVy_size_16_color_FFFFFF_t_70 1

测试报告如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h6cF9mb3JldmVy_size_16_color_FFFFFF_t_70 2

打包运行:

在项目路径执行 mvn clean package;

20190224204245316.png

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h6cF9mb3JldmVy_size_16_color_FFFFFF_t_70 3

在target目录下可以找到打包完的hello-world-1.0-SNAPSHOT.jar文件

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h6cF9mb3JldmVy_size_16_color_FFFFFF_t_70 4

安装项目:

在我的电脑上的本地仓库目录是:

D:\Program Files (x86)\apache-maven-3.5.0\repository

此时在maven库中没有当前项目:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h6cF9mb3JldmVy_size_16_color_FFFFFF_t_70 5

在项目路径执行命令mvn clean install;

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h6cF9mb3JldmVy_size_16_color_FFFFFF_t_70 6

通过控制台输出,在以下目录可以找到安装好的jar

D:\Program Files (x86)\apache-maven-3.5.0\repository\com\rogueq\mvnbook\hello-world\1.0-SNAPSHOT

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h6cF9mb3JldmVy_size_16_color_FFFFFF_t_70 7

虽然HelloWorld类有一个main方法, 但是这样默认打包的jar是不能直接运行的, 因为带有main方法类的信息不会添加到manifest中。此时MANIFEST.MF的内容如下

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: chong
Created-By: Apache Maven 3.5.0
Build-Jdk: 1.8.0_181

为了生成可执行的jar文件, 需要借助maven-shade-plugin, 配置该插件如下:

<?xml version=”1.0” encoding=”utf-8”?>



4.0.0
com.rogueq.mvnbook
hello-world
1.0-SNAPSHOT
Maven Hello World Project



junit
junit
4.7
test






org.apache.maven.plugins
maven-shade-plugin
1.2.1


package

shade




com.rogueq.mvnbook.helloworld.HelloWorld








再次执行mvn clean install 命令, 此时MANIFEST.MF的内容如下

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: chong
Created-By: Apache Maven 3.5.0
Build-Jdk: 1.8.0_181
Main-Class: com.rogueq.mvnbook.helloworld.HelloWorld

备注:MANIFEST.MF 文件位置在 hello-world-1.0-SNAPSHOT.jar 包里面, 可通过压缩工具进行查看

20190224210746270.png

Over!

注:摘取自《Maven实战》

发表评论

表情:
评论列表 (有 0 条评论,405人围观)

还没有评论,来说两句吧...

相关阅读