使用maven编译Java项目

摘要: 综述 本文演示了用Maven编译Java项目 需要 时间:15分钟 文本编辑器或者IDE JDK 6 或者更高版本 创建项目 本例主要为了展示Maven,所以Java的项目力求简单。 创建项目结构 选择一个项目目录,在 *nix系统上使用下面语句 mkdir -p src/main/java/he

综述

本文演示了用Maven编译Java项目

需要

  • 时间:15分钟
  • 文本编辑器或者IDE
  • JDK 6 或者更高版本

创建项目

本例主要为了展示Maven,所以Java的项目力求简单。

创建项目结构

选择一个项目目录,在 *nix系统上使用下面语句

mkdir -p src/main/java/hello

window下使用命令

mkdir src\main\java\hello

创建如下结构:

└── 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!";
    }
}

现在项目完成,可以用Maven编译了。有关Maven的安装,可以参考Apache Maven 3.1.0 安装、部署、使用

定义简单的Maven编译

首先,在项目的根目录下创建一个Maven项目定义文件pom.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>

    <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.xml 文件的最基本的元素了。它包括以下几个项目的配置:

  • <modelVersion> :POM 模块版本(通常是4.0.0).
  • <groupId> :项目所属的组织编号,通常用域名
  • <artifactId> 项目的名称(比如,JAR或者WAR的名称)
  • <version> 项目编译的版本号
  • <packaging> 项目打包形式,jar或者war

编译Java代码

运行下面语句编译

mvn compile

编译完成的.class文件将会出现在target/classes目录下.如下图 

运行项目:

mvn exec:java -Dexec.mainClass="hello.HelloWorld"

输出如下: 

如果不想直接运行.class文件,可以将其打包:

mvn package

打包完成后,会在target目录下生成一个JAR文件,文件名由<artifactId> 和 <version>组成。比如本例,将会根据pom.xml生成gs-maven-0.1.0.jar

 如果你想安装您的项目的JAR文件到本地Maven仓库,那么你应该调用下面语句:

mvn install

此时,你的项目代码将会经过编译、测试、打包并拷贝到本地依赖库,提供给其他项目引用。

以上例子源码的地址https://github.com/waylau/maven-demo中的demo1

说到项目依赖,下面说下声明依赖

声明依赖

上面的例子比较简单,没有用到其他库。但是真实的项目可能会引用(依赖)到很多其他库。

下面例子,依赖了Joda Time的库。

修改src/main/java/hello/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.2</version>
    </dependency>
</dependencies>

这段内容就声明了项目的依赖。每个依赖节点<dependency>都由三个子节点组成:

  • <groupId> : 该依赖库所属的组织名称
  • <artifactId> : 依赖的库名
  • <version> : 依赖的库版本

在POM 4中,<dependency> 中还引入了<scope> ,它主要管理依赖的部署。目前<scope> 可以使用5个值:

  • compile,缺省值,适用于所有阶段,会随着项目一起发布。
  • provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
  • runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
  • test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
  • system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

现在你运行mvn compile或者mvn package,Maven会自动下载相关依赖。

完整的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>

    <!-- tag::joda[] -->
    <dependencies>
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.2</version>
        </dependency>
    </dependencies>
    <!-- end::joda[] -->

    <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>

运行项目:

mvn exec:java -Dexec.mainClass="hello.HelloWorld"

输出如下: 

以上例子源码的地址https://github.com/waylau/maven-demo中的demo2

参考:http://spring.io/guides/gs/maven/

http://www.vineetmanohar.com/2009/11/3-ways-to-run-java-main-from-maven/

原文:https://yq.aliyun.com/articles/46992

原文地址:https://www.cnblogs.com/mafeng/p/8405364.html

时间: 2024-08-06 09:02:32

使用maven编译Java项目的相关文章

maven编译java项目问题(主要针对idea)——Error:java: 无效的目标发行版: 1.8

首先呢,出现这个问题的主要原因是编译的javac版本与实际项目编译的版本冲突,所以解决问题的就有从这些方面出发了: 1.查看项目jdk版本与语言级别,file-->project structrue-->project 2.查看编译的级别,file-->settings-->Build,Execution,Deployment-->Compiler-->Java Compiler修改编译的级别 3.对于maven项目可以在pom文件内配置编译的版本 (1)在proper

Jenkins通过maven构建编译JAVA项目

Jenkins 通过maven 构建编译 JAVA 项目环境 官网下载合适Jenkins版本包: jenkins http://mirrors.jenkins.io/war-stable/  Jdk curl -L -O http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-x64.tar.gz  JDK SE http://120.52.72.24/download.oracle.com/c3pr90ntc0td

Jenkins+Maven进行Java项目持续集成

最近配置了Jenkins服务器,记录下基本过程.(当然还遇到了若干小问题,兵来将挡水来土掩就是了) Jenkins安装 安装Tomcat 从Jenkins官网下载jenkins.war文件.官网地址:http://jenkins-ci.org/,注意选择最新版本的Long-Term Support Release 把war文件部署到Tomcat中 启动Tomcat 在浏览器中配置Jenkins,浏览器地址:http://{Tomcat IP}:{Tomcat port}/jenkins/ Jen

appium + maven +jenkins 基本入门之二 新建maven 的java项目

1: 下载maven : 1.0 :设置maven的环境变量: 1.1: 设置maven本地仓库: 在下载好的maven文件夹找到 apache-maven-3.3.9/conf 文件夹下的settings.xml文件,修改localRepository 为电脑的随便一个文件夹作为本地仓库:如图: 2,开始使用maven 新建java项目了:(第一次需要下载插件,需要比较久的时间) 在终端输入: mvn archetype:generate -DgroupId=com.companyname.t

使用Maven构建Java项目

一.Maven是什么? Maven 是一个项目管理和构建自动化工具.Maven基于POM(Project object model),能够管理项目的构建.报表.文档等信息. 我们这里主要讲的Maven的项目构建功能.有了Maven,我们可以方便的管理Java项目的生命周期和依赖.通过定义一个POM文件,我们就可以自动的完成编译.测试.打包甚至发布等过程. 二.为什么要用Maven? 做过Java项目的童鞋都知道,一个项目中Java代码经常会依赖其他的jar包中的class,或者依赖其它的项目,手

maven创建Java项目和web项目

创建Java项目 C:\Users\Administrator\Desktop>mvn archetype:generate -DgroupId=yxyu.xx -Dartifa ctId=xx1 -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=fals e 创建web项目 C:\Users\Administrator\Desktop>mvn archetype:generate -DgroupId=yxyu

eclipse导入基于maven的java项目后没有Java标志和没有maven Dependencies有解决办法

没有java标志,不识别为Java项目,右键项目-->Properties-->Project Facets-->勾选Java   确定就可以了. 没有maven Dependencies 从其他有maven Dependencies的项目下,找到.project文件,打开,把 <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/> 复

maven编译java代码报“非法字符: \65279 ”错误的解决方法

前段时间开发一个项目,使用maven进行编译时报“非法字符: \65279 ”,但是眼睛看怎么都正确的,文件转成utf-8编码还是报错. 最后没办法,暴力解决了这个问,步骤如下 1.把文件内容复制出来,我是复制到Sublime Text2里面. 2.删除原文件. 3.创建一个新的java文件,并将复制出去的文本粘贴回来.搞定. 最后查了一下,还是很多人遇到这个问题了,而且也有人解答了产生的原因. 这篇文章解答了产生的原因,也给出了另外两种解决方法 http://blog.163.com/[ema

使用IntelliJ IDEA搭建多maven模块JAVA项目

一.新建项目和模块 步骤: 1. 新建一个项目,因为maven管理jar包非常方便,故此处建立一个maven项目:New Project->Maven->(Create from archetype不勾选)->next-填写 GroupId:com.multiplemoduleprojectdemo ArtifactId:project Version:1.0-SNAPSHOT ->Project name:multiplemoduleprojectdemo 2.删除多余的文件夹(