zoukankan      html  css  js  c++  java
  • Maven入门

    原文1

    原文2
    maven-shade-plugin

    你要做的东西

    通过Maven来构建一个显示当天时间的应用。

    你需要的东西

    • 15分钟
    • 你喜欢的文本编辑器或者IDE
    • JDK 8 或者更新

    如何完成这个指南

    我是新手,走最基础的方式


    创建项目

    首先,你需要创建一个项目用来给Maven构建。把注意力集中到Maven上,项目做得尽可能简单。项目结构如下。

    src
    	main
    		java
    			hello
    

    找个文件夹先创建一下目录 mkdir -p src/main/java/hello,然后创建2个类。HelloWorld.javaGreeter.java

    代码如下:

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

    这样就有了一个可以用Maven构建的项目,下一步就是要安装Maven。

    安装Maven

    Maven可以在链接下载。只需要二进制文件就好,像apache-maven-*{version}*-bin.zip apache-maven-*{version}*-bin.tar.gz这样的链接。

    下载完成之后解压,然后把解压出来的bin目录添加到PATH环境变量中。

    先检查一下JAVA_HOME环境变量的值。

    echo $JAVA_HOME
    /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
    

    然后修改PATH的值

    export PATH=/opt/apache-maven-3.6.0/bin:$PATH
    

    然后用mvn -v测试一下

    Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
    

    成功安装。

    跳过Maven Wrapper相关的介绍

    定义一个简单的Maven构建

    按照上面步骤装好Maven,现在需要创建一个Maven项目的定义文件。通过pom.xml来实现。这里可以指定项目的名称,版本,外部依赖项。

    在项目的根目录创建一个_pom.xml_文件,和src文件夹同级,内容如下。

    <?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>元素,这是一个最简单的用来构建项目的pom 配置文件。他包括以下几点:

    • <modelVersion> pom文件模型的版本。一直是4.0。
    • <groupId> 表示项目所属的组或组织,通常是反过来写的域名。
    • <artifactId> 项目最后生成的文件的名字,比如jar 或者 war文件的名字。
    • <version> 项目的版本。
    • <packaging> 打包的方式,默认是jar,也可以指定war。

    当选择版本的时候,建议使用 链接方式。
    记得要添加build节点,引用maven-shade-plugin 这个用于把代码打包成一个可执行的jar

    编译java代码

    现在可以用Maven来编译你的项目了。可以用Maven做到以下几点:

    • 编译你的项目代码
    mvn compile
    

    完成之后在 target/classes 目录下会生成编译好的.class 文件。

    • 创建jar包
    mvn package
    

    package命令会编译代码+运行测试+生成jar文件。jar文件名是依据pom里面设置的artifactId和version来的。

    • 在本地Maven仓库安装依赖

    Maven也会在本机上维护依赖项。通常是在.m2/repository 目录以便下次用到的时候尽快访问到。如果你想把你项目的jar文件安装到本地仓库,你需要使用install命令。

    mvn install
    

    这个命令会编译,测试,打包你的代码,然后安装到本地仓库,用于其他项目的依赖引用。

    声明依赖项

    上面的项目很简单,没有依赖其他任何库。但通常来说,大部分项目都是需要依赖外部库来处理一系列问题。

    举个例子说,我们需要使用Joda这个库来打印当前时间。

    首先改一下HelloWorld.java的代码。

    package hello;
    
    import org.joda.time.LocalTime;
    
    public class HelloWorld {
    	public static void main(String[] args) {
    		LocalTime currentTime = new LocalTime();
    		System.out.println("The current local time is: " + currentTime);
    		Greeter greeter = new Greeter();
    		System.out.println(greeter.sayHello());
    	}
    }
    

    如果直接运行mvn compile,编译会报错。我们需要在<project>节点中增加下面内容。

    <dependencies>
    		<dependency>
    			<groupId>joda-time</groupId>
    			<artifactId>joda-time</artifactId>
    			<version>2.9.2</version>
    		</dependency>
    </dependencies>
    

    上面的xml定义了项目需要用到的依赖项。group,artifactId,version和上面的意思一样。dependency默认的作用域是compile,这意味着他们的在编译期间是可用的。可以通过<scope>来指定他们的作用域。还有两种:

    1. provided 编译+运行时可用。
    2. test编译+测试时可用,运行时不可用。

    再次运行compile,mvn就会去下载对应的dependency。

    编写测试

    第一步,添加一下JUnit依赖到pom.xml文件中,作用域是test。

    <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
    </dependency>
    

    创建一个src/test/java/hello/GreeterTest测试用例

    package hello;
    
    import static org.hamcrest.CoreMatchers.containsString;
    import static org.junit.Assert.*;
    
    import org.junit.Test;
    
    public class GreeterTest {
    
    	private Greeter greeter = new Greeter();
    
    	@Test
    	public void greeterSaysHello() {
    		assertThat(greeter.sayHello(), containsString("Hello"));
    	}
    
    }
    

    Maven使用surefire插件来运行单元测试。默认的配置是运行所有src/test/javaTest结尾的类。下面来运行。

    小结

    恭喜,你完成了。

  • 相关阅读:
    sklearn库学习笔记1——preprocessing库
    juypter notetbook
    信用卡欺诈
    matplotlib1
    python一行输入多个数
    pandas数据预处理
    pandas基础用法
    numpy简单用法2
    numpy 简单用法
    简单循环
  • 原文地址:https://www.cnblogs.com/sheldon-lou/p/10649269.html
Copyright © 2011-2022 走看看