一下内容包括:用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项目的更多相关文章

  1. 使用Maven创建一个普通java项目

    1.创建项目: 使用Maven目的是是我们能够轻松的管理各种别人写过的包 创建好之后,我们去找我们所需要的包:在mvnrepository.com中找自己所需要的包 例子: 最后将依赖写入pom.xm ...

  2. IDEA 创建一个普通的java项目

    IntelliJ IDEA 如何创建一个普通的java项目,及创建java文件并运行 首先,确保idea软件正确安装完成,java开发工具包jdk安装完成. IntelliJ IDEA下载地址:htt ...

  3. 使用IDEA结合MAVEN创建一个Spring Java Web项目

    前言 如今的Java项目,如果还使用传统的把jar包复制到目录下这种原始的方式,对于依赖管理来说实在是灾难.对某个功能需要引入某种技术包,但是你不确定是否已存在,如果分类好的话还好找,若是杂在一堆不仅 ...

  4. 如何用Eclipse创建一个JavaSwing的项目

    创建之前必须先给开发工具安装WindowBuilder插件(安装方法可自行百度) 方式一: 创建项目 new--other--WindowBuilder--SWT Designer----SWT/JF ...

  5. Scala IDEA for Eclipse里用maven来创建scala和java项目代码环境(图文详解)

    这篇博客 是在Scala IDEA for Eclipse里手动创建scala代码编写环境. Scala IDE for Eclipse的下载.安装和WordCount的初步使用(本地模式和集群模式) ...

  6. 用maven来创建scala和java项目代码环境(图文详解)(Intellij IDEA(Ultimate版本)、Intellij IDEA(Community版本)和Scala IDEA for Eclipse皆适用)(博主推荐)

    不多说,直接上干货! 为什么要写这篇博客? 首先,对于spark项目,强烈建议搭建,用Intellij IDEA(Ultimate版本),如果你还有另所爱好尝试Scala IDEA for Eclip ...

  7. Eclipse中使用Maven创建Servlet3.0 Web 项目

    摘要 Apache Maven是一个优秀的项目构建和管理工具,许多开源项目都使用Maven进行构建.由于最近工作中要用到Maven,于是这里记录下在Eclipse中使用Maven插件创建一个基于Ser ...

  8. Maven学习(十一)-----使用Maven创建Web应用程序项目

    使用Maven创建Web应用程序项目 用到的技术/工具: Maven 3.3.3 Eclipse 4.3 JDK 8 Spring 4.1.1.RELEASED Tomcat 7 Logback 1. ...

  9. maven 学习---使用Maven创建Web应用程序项目

    在本教程中,我们将演示如何使用 Maven 创建一个 Java Web 项目(Spring MVC). 用到的技术/工具: Maven 3.3.3 Eclipse 4.3 JDK 8 Spring 4 ...

随机推荐

  1. kibana去掉丑陋的basic验证框,用自定义验证代替。

    最近在改写kibana,碰到了验证登录的问题.问题是这样子的,nginx设置了basic认证,然后客户端访问kibana的时候总是会弹出登录框,输入用户名和密码,现在要改写这个登陆框,用bootstr ...

  2. 使用Azure portal Create Virtual Machine

    使用简单快速的方式穿件的Virtual Machine 这个步骤隐藏的了很多步骤,例如的创建的云服务(Cloud Service) 创建存储(Storage) 存储名为系统自动产生 可以通过存储看到含 ...

  3. getchar(),gets(),scanf()的差异比较

    scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别.若想从键盘上输入字符串"hi hello",则应该使用gets()函数. gets可以接收空格:而sc ...

  4. 【Ibatis】总结各种使用技巧

    [Ibatis]总结各种使用技巧 <alias> <typeAlias alias="YintaiMobile_FreeData_Model" type=&quo ...

  5. MVC学习系列——ActionResult扩展

    首先,MVC扩展性非常强. 我从ActionResult扩展入手,因为我们知道微软ActionResult和其子类,有时候并不能满足所有返回值. 比如:我需要返回XML. 因此,现在我扩展XMLRes ...

  6. ASP.NET Web – AJAX 回送

    使用UpdatePanel时要一起使用的控件是ScriptManager.ScriptManager类加载了包含几个功能的JavaScript函数.也可以使用这个类加载自己定制脚本.ScriptMan ...

  7. ios map 显示用户位置

    昨天遇到个奇怪的问题,用户的位置在地图中死活不显示,showUserLocation也设置了,最后发现是因为实现了 mapView protocol中的一个方法: -(MKAnnotationView ...

  8. PHP读取xml之cdata讲解

    实例: xss.xml <?xml version="1.0" encoding="UTF-8"?><filters>    <f ...

  9. 【二叉树遍历模版】前序遍历&&中序遍历&&后序遍历&&层次遍历&&Root->Right->Left遍历

    [二叉树遍历模版]前序遍历     1.递归实现 test.cpp: 12345678910111213141516171819202122232425262728293031323334353637 ...

  10. HDU 1385 Minimum Transport Cost (最短路,并输出路径)

    题意:给你n个城市,一些城市之间会有一些道路,有边权.并且每个城市都会有一些费用. 然后你一些起点和终点,问你从起点到终点最少需要多少路途. 除了起点和终点,最短路的图中的每个城市的费用都要加上. 思 ...