Maven-手动创建Maven项目

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

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

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

     D:\maven

创建第一项目HelloWorld

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

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

<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4.0.0.xsd">
    
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.rogueq.mvnbook</groupId>
    <artifactId>hello-world</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>Maven Hello World Project</name>
</project>

同时创建文件夹:

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

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

在编写一个Java类 HelloWorld.java

package com.rogueq.mvnbook.helloworld;

public class HelloWorld {
    
    public String sayHello() {
        return "Hello Maven";
    }
    
    public static void main() {
        System.out.println(new HelloWorld().sayHello());
    }
}

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

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

 

测试:

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

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

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

添加JUnit依赖:

<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4.0.0.xsd">
    
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.rogueq.mvnbook</groupId>
    <artifactId>hello-world</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>Maven Hello World Project</name>
    
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.7</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

编写测试类HelloWorldTest:

package com.rogueq.mvnbook.helloworld;

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

public class HelloWorldTest {
    
    @Test 
    public void testSayHello() {
        HelloWorld helloWorld = new HelloWorld();
        String result = helloWorld.sayHello();
        assertEquals("Hello Maven", result);
    }
    
}

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

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

测试报告如下:

 

打包运行:

在项目路径执行 mvn clean package;

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

安装项目:

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

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

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

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

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

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

虽然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"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4.0.0.xsd">
    
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.rogueq.mvnbook</groupId>
    <artifactId>hello-world</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>Maven Hello World Project</name>
    
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.7</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>1.2.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.rogueq.mvnbook.helloworld.HelloWorld</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

再次执行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 包里面, 可通过压缩工具进行查看

 

Over!

 

注:摘取自《Maven实战》

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值