Maven可以创建Java工程,也可以创建Java Web工程,下面详细介绍一下。
注意:以下演示使用的是JDK1.7版本,不要与上一篇博客搞混,自己安装的哪个版本的JDK,就使用哪个版本的JDK。
右键new other,搜索Maven,在Maven目录下选择Maven Project,点击Next,如下图:
选择项目要使用的东西,只勾选User default Workspace location,另外两个不做勾选。如图有选项的解释。 骨架:相当于是项目模板。如下图:
3、选择骨架
这里我们要创建的是Java项目,所以选择quickstart结尾的骨架,然后next。如下图:
Group Id:项目分组ID,其实就是包名。 Artifact Id:项目名称 Version:项目版本号。 Package:包名,根据上面的group id 和Artifact id 自动生成,不用填写。 这些信息填写完成,点击Finish。
SNAPSHOT:快照版本。不稳定版本,经常涉及修改的版本,可能一天都会修改多个版本。 RELEASE:发布版本。稳定版本,没有项目更新和bug的版本,如果后期生产环境下出现bug或有新的功能,需要发布新的 Release版本。 第一次创建工程会花费一段时间,因为骨架也需要下载依赖文件。
由于Maven工具本身的原因,新创建的项目默认都使用的是1.5版本的JDK,这就需要我们自己手动修改一下JDK以及JRE的版本。
在工程上右键,选择Properties,出现如图界面,然后选择Java build Path,在Libraries中找到JRE选中,点击Edit,进行编辑了,选中自己安装的JRE,点击Finish,点击OK,即可修改完成。
在如图界面,找到Java Compiler,将JDK版本改到自己安装的版本,点击OK即可。
6.修改eclipse视图
将Eclipse的目录视图改成包视图,在window-showview中,修改成如下视图。
创建web项目和Java项目前面的步骤都一样,只是在选择项目骨架的时候,选择web项目骨架即可。当项目创建完成之后,步骤有所不同。Web项目需要修改JRE版本,JDK版本,Maven中Project Facets中Java的版本。如下图:
因为Eclipse中的校验级别很高,常常会无端的报错,这里建议将所有的校验给关闭。如图操作。
main目录下是项目的主要代码。 src/main/java下存放Java代码。 src/main/resources下存放配置文件。 test目录下存放测试相关的代码。 target目录下存放编译输出后的代码。 webapp下存放Web应用相关代码。 pom.xml是Maven项目的配置文件。
因为这个配置文件是Maven的核心,因此有必要详细解读一下pom.xml,来先看一下上面的几个:
指定了当前Maven模型的版本号,对于Maven2和Maven3来说,它只能是4.0.0
顾名思义,这个应该是公司名或是组织名。一般来说groupId是由三个部分组成,每个部分之间以"."分隔,第一部分是项目用途,比如用于商业的就是"com",用于非营利性组织的就是"org";第二部分是公司名,比如"tengxun"、"baidu"、"alibaba";第三部分是你的项目名。
可以认为是Maven构建的项目名,比如你的项目中有子项目,就可以使用"项目名-子项目名"的命名方式
版本号,SNAPSHOT意为快照,说明该项目还在开发中,是不稳定的版本。在Maven中很重要的一点是groupId、artifactId、version三个元素生成了一个Maven项目的基本坐标,这非常重要。
在上面的这些元素之外,还有一些元素,同样罗列一下:
项目打包的类型,可以使jar、war、rar、ear、pom,默认是jar
前者包含后者。前面说了,Maven的一个重要作用就是统一管理jar包,为了一个项目可以build或运行,项目中不可避免的,会依赖很多其他的jar包,在Maven中,这些依赖就被称为dependency。
properties是用来定义一些配置属性的,例如project.build.sourceEncoding(项目构建源码编码方式),可以设置为UTF-8,防止中文乱码,也可定义相关构建版本号,便于日后统一升级。
build表示与构建相关的配置,比如build下有finalName,表示的就是最终构建之后的名称。
下面是阿里DATAX的一个pom文件,拿过来给大家当作示例展示。
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.alibaba.datax</groupId>
<artifactId>datax-all</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>datax-core</artifactId>
<name>datax-core</name>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.alibaba.datax</groupId>
<artifactId>datax-transformer</artifactId>
<version>${datax-project-version}</version>
<exclusions>
<exclusion>
<artifactId>slf4j-log4j12</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>commons-configuration</groupId>
<artifactId>commons-configuration</artifactId>
<version>${commons-configuration-version}</version>
</dependency>
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>${commons-cli-version}</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>fluent-hc</artifactId>
<version>4.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>2.5.16</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>1.8.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.1.9</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.alibaba.datax.core.Engine</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.alibaba.datax.core.Engine</mainClass>
</manifest>
</archive>
<finalName>datax</finalName>
<descriptors>
<descriptor>src/main/assembly/package.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- compiler plugin -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>${project-sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
可以从框架官网查找,或前往maven的官方仓库查找:http://mvnrepository.com/ 把坐标写到pom.xml文件中的 <dependcies>内部。如下图:
写完坐标之后保存时,会自动下载pom文件中配置好的框架及框架的依赖jar包。
下载下来的文件存放在本地仓库中: