Java开发环境系列:项目管理利器Maven安装配置及常见问题分析

下载

下载地址:http://maven.apache.org/download.cgi

安装

maven安装非常简单,绿色免安装,直接解压即可,解压后目录结构:

配置

一般只需要配置两个地方即可,有些公司可能有自己的私服,需要额外配置。

1、本地仓库路径:

<localRepository>C:\DevTools\mavenrepo</localRepository>

2、中央仓库地址:

<mirrors>

    <mirror>

        <id>alimaven</id>

        <name>aliyun maven</name>

        <url>http://maven.aliyun.com/nexus/content/groups/public/</url><!--外部私服-->

        <mirrorOf>central</mirrorOf>

    </mirror>

  </mirrors>

Maven名词解释

Project:

任何你想build的事物,Maven都可以认为它们是工程。这些工程被定义为工程对象模型(POM,Poject Object Model)。一个工程可以依赖其它的工程;一个工程也可以由多个子工程构成。

POM:

POM(pom.xml)是Maven的核心文件,它是指示Maven如何工作的元数据文件,类似于Ant中的build.xml文件。POM文件位于每个工程的根目录中。

GroupId:

groupId是一个工程的在全局中唯一的标识符,一般地,它就是工程名。groupId有利于使用一个完全的包名,将一个工程从其它有类似名称的工程里区别出来。

Artifact:

artifact 是工程将要产生或需要使用的文件,它可以是jar文件,源文件,二进制文件,war文件,甚至是pom文件。每个artifact都由groupId和 artifactId组合的标识符唯一识别。需要被使用(依赖)的artifact都要放在仓库(见Repository)中,否则Maven无法找到 (识别)它们。

Dependency:

为了能够build或运行,一个典型的Java工程会依赖其它的包。在Maven中,这些被依赖的包就被称为dependency。dependency一般是其它工程的artifact。

Plug-in:

Maven是由插件组织的,它的每一个功能都是由插件提供的。插件提供goal(类似于Ant中的target),并根据在POM中找到的元数据去完成工作。主要的Maven插件要是由Java写成的,但它也支持用Beanshell或Ant脚本写成的插件。

创建maven项目

1、创建工程

File -> New -> Other ,搜索maven,选择Maven Project,NEXT

2、选择类型

Create a simple project(skip archetype selection) 创建简单工程(跳过骨架选择),勾选后会根据打包方式自动选择骨架。

比如选择war包,自动选择web骨架。

3、填写项目信息

这里需要填入 group id(项目组)和 artifact id(项目名), 填完之后点击finish, 一个maven的web项目就创建完成

4、手动写web.xml

如果没有web.xml,pom.xml文件会报错,可以在pom.xml文件中配置如下信息:

<properties>

    <failOnMissingWebXml>false</failOnMissingWebXml>

</properties>

maven项目常见的几个问题

1、maven项目提示web.xml is missing或红色感叹号

这是一个Maven错误,在最近的web应用开发中web.xml文件已经变得可有可无了。不过Maven还没有跟上这一变化。

我们只要在pom.xml文件中手动添加如下配置:

<properties>

   <failOnMissingWebXml>false</failOnMissingWebXml>

</properties>

2、红色感叹号,build path无报错

一般是因为缺少jar包。在保证pom.xml没有报错的情况下,顺序进行如下操作。

1)项目右键,maven download sources

2)项目右键,maven update project

3)项目右键,run as maven clean

4)project clean 选中报错项目 clean

如果以上步骤仍然无效,可在Problems视图查看具体错误,

Description Resource Path Location Type

Archive for required library: 'D:/DevTools/mavenrepo/org/apache/lucene/lucene-backward-codecs/5.5.4/lucene-backward-codecs-5.5.4.jar' in project 'test' cannot be read or is not a valid ZIP file test Build path Build Path Problem

意思是这个jar包虽然已经存在了,但是是无效的,可能被损坏了。在Maven本地仓库中找到该jar包,删除之,随便修改一下pom.xml保存,maven会重新下载jar包,然后就正常了。

3、项目顶级目录有红色感叹号,pom.xml文件有红叉

修改了Maven私服服务器的IP地址。可在Maven安装路径下的conf/setting.xml中修改ip地址,具体参照“开发工具”/maven.

工程中classpath中指向的包路径错误;右键项目名称 BuildPath --> Configure Build Paht...中,然后上面有几个选项卡找到 Libraries中出现红色叉号或黄色感叹号的包,remove。到classpath中修改相应包的当前路径。

回到eclipse中F5刷新工程。

4、新建一个文件夹然后删除,项目出现红叉

右击项目名,在弹出的菜单中选择“Bulid Path”-->“configure build path”-->“Source”,找到已被删除的那个文件名,选择“remove”删除掉就行了。

5、项目顶级目录有红叉,里面文件没有

1)可能是环境的问题,尝试在你的工程上右键-->properties-->JavaCompiler,在enable project specal settings前勾上,问题解决。

如果没有,则尝试project->clean,或maven update

2)可能是类java build path 处有缺失的类库,或者是指定了编译级别是1.5(window-preferences-compiler),但是你给项目指定了一个jdk1.6的。如果还有项目有红叉,右键项目“Properties”,在弹出的“Properties”窗口左侧,单击“Project Facets”,打开“Project Facets”页面。

在页面中的“Java”下拉列表中,选择合适于jdk的等级,点击保存就行了。

3)如果是因为java compiler level does not match the version of the installed java,那么我们打开项目的properties,有一个选项为project facets,点击打开,在右边选择Java版本为最新的,然后apply,应该就ok了。

当然也有可能是因为引用的jar包无效而导致的,根据指出的哪个jar删除进行重新引用即可。

6、Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/core/env/EnvironmentCapable

原因:版本过低,把spring-boot-starter-parent版本调高一点就可以了

<parent>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-parent</artifactId>

        <version>1.5.9.RELEASE</version>

        <relativePath /> <!-- lookup parent from repository -->

    </parent>

7、有pom.xml文件但是无法用maven构建问题

java项目转maven项目,要注意pom.xml文件中是否定义了JDK的版本,要与环境保持一致。

项目,右键,configure,选择转换为maven项目即可。

转换后,有三个位置需要注意:

1、Java compiler    编译级别

2、Project Facets    

3、Java Build Path    注意JDK版本,及是否缺失jar包。

有些非java项目的“项目”,需要maven-->maven clean-->maven install后才会真正转换为maven项目。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券