• Maven系列(一)从零开始构建Java应用程序


    前段时间面试,面试官要我简述一下Maven生命周期。之前只知道Maven用来构建一个项目,但是具体生命周期是什么不甚了解(我之前一直做.net,但是想找关于java的工作,之前使用Maven构建过项目,所以提了一下)。回来之后赶紧百度了一下,看完瞬间汗颜,连Maven生命周期不懂,还敢称使用过Maven,所以空闲时间学习了一下。本系列也是我在学习Maven中的一个记录,会随着我学习的深入而加深,学习中参照了spring.io Maven教程

    1、创建目录结构,如下

    └── src
        └── main
            └── java
                └── hello

    在目录src/main/java/hello,我们可以添加任何的java类。那我们就创建这两个类吧:HelloWorld.java和Greeter.java。

    src/main/java/hello/HelloWorld.java

    package hello;
    
    public class HelloWorld {
        public static void main(String[] args) {
            Greeter greeter = new Greeter();
            System.out.println(greeter.sayHello());
        }
    }

    src/main/java/hello/Greeter.java

    package hello;
    
    public class Greeter {
        public String sayHello() {
            return "Hello world!";
        }
    }

    2、下载,安装,配置Maven

    Maven官网直接下载压缩文件,下载地址Maven,解压后,添加bin目录到环境变量中。在命令行中运行mvn命令,测试maven是否正确安装。如果安装正确,就是显示Maven版本号。

    mvn -v

    3、安装好Maven后,我们需要创建一个Maven项目定义。 Maven项目使用名为pom.xml的XML文件进行定义。 除此之外,该文件还提供项目的名称,版本和它在外部库上的依赖关系。项目文件夹下新建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>org.springframework</groupId>
        <artifactId>gs-maven</artifactId>
        <packaging>jar</packaging>
        <version>0.1.0</version>
    
        <properties>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
        </properties>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>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>hello.HelloWorld</mainClass>
                                    </transformer>
                                </transformers>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </project>

     除了可选的<packaging>元素外,这是构建Java项目所需的最简单的pom.xml文件。 它包含项目配置的以下详细信息:

    <modelVersion>: POM模型版本(总是4.0.0)。

    <groupId>: 该项目所属的组或组织,通常表示为反向域名。

    <artifactId>:要赋予项目库工件的名称(例如,其JAR或WAR文件的名称)。

    <version>: 正在构建的项目版本。

    <package>:项目应该如何打包。 JAR文件打包默认为“jar”, WAR文件打包使用“war”。

    4、编译java源代码。 运行Maven,执行编译(compile)目标。完成后,可以在target / classes目录中找到已编译的.class文件。

    mvn compile

    执行打包(package)目标。maven将会重新编译(compile)源码,执行一些测试(test)用例,最后将源码打包到/target下的jar文件中,jar文件的命名基于pom.xml中的<artifactId>和<version>。因此,根据我们上面的pom.xml的配置,生成的jar文件应该命名为gs-maven-0.1.0.jar

    mvn package

    使用java命令执行jar里的main方法

    java -jar target/gs-maven-0.1.0.jar
    ##运行指定的main方法
    java -classpath target/gs-maven-0.1.0.jar hello.Application

    6、将java项目导入eclipse

    以上步骤我们都只是建立了一个java项目整体的框架,并不能直接在eclipse中打开项目。需要执行以下命令,生成相关的将生成的项目转换成可导入IDE的(执行以下命令后,它会自动下载更新相关资源和配置信息,并产生 Eclipse IDE所要求的所有项目文件)

    mvn eclipse:eclipse
  • 相关阅读:
    CF1375 题解
    CF1381 题解
    CF1394 题解
    CF1383 题解
    git pull提示You are not currently on a branch. Please specify which
    centos6 YUMREPO ERROR ALL MIRROR URLS ARE NOT USING FTP, HTTP[S] OR FILE
    git报错fatal protocol error bad pack header
    Mongo服务器管理之部署MongoDB讨论
    Mongo服务器管理之备份
    Mongo服务器管理之监控MongoDB
  • 原文地址:https://www.cnblogs.com/lideqiang/p/8809303.html
Copyright © 2020-2023  润新知