如何用Maven创建一个普通Java项目
一下内容包括:用Maven创建一个普通Java项目,并把该项目转成IDEA项目,导入到IDEA,最后把这个项目打包成一个jar文件。
有时候运行mvn命令失败,重复运行几次就OK了,无解(可能因为网络问题,一些文件没下载到,搭建私服后就不会了)。
1、用Maven模板创建一个项目
打开控制台,进入到想要创建项目的目录,然后运行如下命令,参数自由填写:
mvn archetype:generate -DgroupId={project-packaging}
-DartifactId={project-name}
-DarchetypeArtifactId=maven-archetype-quickstart
-DinteractiveMode=false
参数说明:
1.1、-DgroupId:包名,如:com.google
1.2、-DartifactId: 项目名称,如:NumberGenerator
1.3、-DarchetypeArtifactId: 项目的类型,Maven提供了很多模板,如果你没写这个,创建的时候就会列出一大堆模板让你选择
1.4、-DinteractiveMode: 是否使用交互模式,如果是true,那么在创建过程中就要手动输入一些参数
一个实际例子:
mvn archetype:generate -DgroupId=com.mkyong -DartifactId=NumberGenerator
-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
在上面的例子中,Maven会创建一个名为"NumberGenerator"的项目,并把项目的目录结构自动创建好,如果你的命令执行失败了,那就手动创建吧。
2、项目结构
使用mvn archetype:generate + maven-archetype-quickstart模板创建出来的项目结构如下:
NumberGenerator
|-src
|---main
|-----java
|-------com
|---------mkyong
|-----------App.java
|---test
|-----java
|-------com
|---------mkyong
|-----------AppTest.java
|-pom.xml
所有源代码放在/src/main/java/目录里,所有测试代码放在/src/test/java/目录里。
除此之外还会生成一个标准的pom.xml文件,里面描述了整个项目的信息,所有信息都是从目录结构里来的,包括项目插件、依赖关系以及如何编译项目等等,里面内容如下,具体查看official POM guide.。
<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.mkyong</groupId>
<artifactId>NumberGenerator</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>NumberGenerator</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
3、IDEA IDE
要把这个项目转成IDEA项目,要进入到"NumberGenerator"目录,然后运行如下命令,Maven将会生成IEAD所需的所有文件:
mvn idea:idea -DjdkName=1.7
此处的JDK版本一定要写,我没写时运行就出错了(可能因为网络问题,一些文件没下载到,搭建私服后就不会了)。JDK版本可通过运行 java -version 获得。mvn idea:idea 命令详解:http://maven.apache.org/plugins/maven-idea-plugin/usage.html。
导入后如下图所示:

4、更新pom.xml文件
默认的pom.xml文件太简单了,大多数时候你需要添加编译插件,告诉Maven用哪个JDK版本来编译你的项目(默认是1.4,太旧了)。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<!--指定JDK版本-->
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
把jUnit升级到4.11版本:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
上面的代码片段叫做"Maven Coordinate",你需要自己到Maven中心仓库查找所需的"Maven Coordinate"。
完整的pom.xml:
<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.yanyd</groupId>
<artifactId>NumberGenerator</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>NumberGenerator</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<!--JDK版本-->
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
在命令行再次输入命令:mvn idea:idea -DjdkName=1.7,Maven将会自动下载编译插件并自动升级jUnit的版本,并把依赖包放到本地仓库里。
5、更新业务逻辑
根据驱动测试开发(TDD),先修改单元测试案例,首先要确保App对象有一个方法能够生成一个独一无二的36位字符串。
App.java:
package com.yanyd; import java.util.UUID; /**
* Generate a unique number
*
*/
public class App
{ public static void main( String[] args )
{
App obj = new App();
System.out.println("Unique ID : " + obj.generateUniqueKey());
} public String generateUniqueKey(){ String id = UUID.randomUUID().toString();
return id; }
}
TestApp.java:
package com.yanyd; import org.junit.Assert;
import org.junit.Test; public class AppTest { @Test
public void testLengthOfTheUniqueKey() { App obj = new App();
Assert.assertEquals(36, obj.generateUniqueKey().length()); }
}
6、使用Maven打包
现在我们使用Maven编译项目并打包成一个jar文件,打包成什么格式的文件,是通过pom.xml里的packaging标签定义的。
在控制台里输入打包命令:mvn package,Maven就会开始编译项目,运行里面的单元测试,通过测试后就会把项目打包成一个jar文件放在project/target目录里。
由于target目录不会显示在IntelliJ IDEA 里,所以只能到文件浏览器里查看了,最终的项目目录结构如下:

7、运行项目
通过jar文件来运行这个App例子,在控制台输入如下命令,即可运行程序:
D:\IntelliJ\maven-project\NumberGenerator>java -cp target/NumberGenerator-1.0-SNAPSHOT.jar com.yanyd.App
Unique Id:47193d77-ec6f-4e95-aa94-337592f6824d D:\IntelliJ\maven-project\NumberGenerator>java -cp target/NumberGenerator-1.0-SNAPSHOT.jar com.yanyd.App
Unique Id:b6c85811-e81f-4a50-82b8-afbc59bbf265 D:\IntelliJ\maven-project\NumberGenerator>
如何用Maven创建一个普通Java项目的更多相关文章
- 使用Maven创建一个普通java项目
1.创建项目: 使用Maven目的是是我们能够轻松的管理各种别人写过的包 创建好之后,我们去找我们所需要的包:在mvnrepository.com中找自己所需要的包 例子: 最后将依赖写入pom.xm ...
- IDEA 创建一个普通的java项目
IntelliJ IDEA 如何创建一个普通的java项目,及创建java文件并运行 首先,确保idea软件正确安装完成,java开发工具包jdk安装完成. IntelliJ IDEA下载地址:htt ...
- 使用IDEA结合MAVEN创建一个Spring Java Web项目
前言 如今的Java项目,如果还使用传统的把jar包复制到目录下这种原始的方式,对于依赖管理来说实在是灾难.对某个功能需要引入某种技术包,但是你不确定是否已存在,如果分类好的话还好找,若是杂在一堆不仅 ...
- 如何用Eclipse创建一个JavaSwing的项目
创建之前必须先给开发工具安装WindowBuilder插件(安装方法可自行百度) 方式一: 创建项目 new--other--WindowBuilder--SWT Designer----SWT/JF ...
- Scala IDEA for Eclipse里用maven来创建scala和java项目代码环境(图文详解)
这篇博客 是在Scala IDEA for Eclipse里手动创建scala代码编写环境. Scala IDE for Eclipse的下载.安装和WordCount的初步使用(本地模式和集群模式) ...
- 用maven来创建scala和java项目代码环境(图文详解)(Intellij IDEA(Ultimate版本)、Intellij IDEA(Community版本)和Scala IDEA for Eclipse皆适用)(博主推荐)
不多说,直接上干货! 为什么要写这篇博客? 首先,对于spark项目,强烈建议搭建,用Intellij IDEA(Ultimate版本),如果你还有另所爱好尝试Scala IDEA for Eclip ...
- Eclipse中使用Maven创建Servlet3.0 Web 项目
摘要 Apache Maven是一个优秀的项目构建和管理工具,许多开源项目都使用Maven进行构建.由于最近工作中要用到Maven,于是这里记录下在Eclipse中使用Maven插件创建一个基于Ser ...
- Maven学习(十一)-----使用Maven创建Web应用程序项目
使用Maven创建Web应用程序项目 用到的技术/工具: Maven 3.3.3 Eclipse 4.3 JDK 8 Spring 4.1.1.RELEASED Tomcat 7 Logback 1. ...
- maven 学习---使用Maven创建Web应用程序项目
在本教程中,我们将演示如何使用 Maven 创建一个 Java Web 项目(Spring MVC). 用到的技术/工具: Maven 3.3.3 Eclipse 4.3 JDK 8 Spring 4 ...
随机推荐
- WPF学习01:初始XAML浅析
本文内容: 浅析WPF应用默认创建的XAML中元素.attributes. 新建WPF工程“HelloWPF”. 初始创建的主窗体XAML代码如下: <Window x:Class=" ...
- Posix 信号量
作用 信号量的值为0或正整数,就像红灯与绿灯,用于指示当前是否可以接受任务. 信号量对进程和线程都适用. gcc编译时需加-lpthread 基本函数 信号量的相关函数与标准文件函数非常相似,可以理解 ...
- 多线程中,static函数与非static函数的区别?
最近在学习多线程,刚入门,好多东西不懂,下面这段代码今天想了半天也没明白,希望看到的兄弟姐妹能解释下. public class NotThreadSafeCounter extends Thread ...
- redis 界面软件使用
ubuntu 下下载安装包 sudo dpkg -i redis-desktop-manager_0.8.3-120_amd64.deb//安装 redis-desktop-manager //启动
- 微软职位内部推荐-Sr SDE for Win Apps Ecosystem
微软近期Open的职位: Job posting title: Senior Software Design Engineer Location: China, Beijing Level: 63 D ...
- jquery-2.0.3.js和jquery-2.0.3.min.js的区别
两个文件的作用是完全一样的. jquery-2.0.3.js里的代码是没有进行处理的原代码,适合于人们阅读与研究. jquery-2.0.3.min.js里的代码进行过特殊的处理, 如变量的名称基本都 ...
- VBS基础篇 - 常量
常量:指的是在程序运行过程中其值保持不变的量,它用来保存固定不变的数值,字符串等常数 . 常量的定义:在vbscript中使用使用 Const 指令可以创建名称具有一定含义的字符串型或数值型常量,并给 ...
- IOS开发实现录音功能
导入框架: ? 1 #import <AVFoundation/AVFoundation.h> 声明全局变量: ? 1 2 3 4 5 @interface ViewController ...
- 解决方法:java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
hibernate4.3版本 报错: 把实体注解的声明方式修改一下解决,如: 将 @Entity@Table(name=”table_name”)改为@Entity(name=”table_name” ...
- Educational Codeforces Round 13 E. Another Sith Tournament 概率dp+状压
题目链接: 题目 E. Another Sith Tournament time limit per test2.5 seconds memory limit per test256 megabyte ...