eclipse支持maven项目的创建,如果你希望不要等待那么久,直接跳过架构选择即可,但是你需要清晰地知道Maven的项目结构,他应该是这个样子:
Eclipse中的Maven项目对
文件夹的结构解析是自动的,对应的关系如上图。 如果你创建的项目的结构不是如此,可以手动添加对应文件夹,Eclipse可以自动识别。注意所有文件夹的创建都应该在src下。当然,SpringBoot的web内容是直接仿到resouces下面的,那是SpringBoot内置的对静态资源的处理。
很多人发现创建完的Eclipse的Maven项目,在Project Facts中看到的Java的版本居然是1.5这个上古时代的版本,实际上我们只需要在Maven中添加这么一段代码就可以了:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
Eclipse实际上对Maven的支持并不算完备,其中一个特点就是Eclipse仍按照自己的方式来管理Maven项目,当我们修改了POM配置后,Maven并不能自动读取理解。而且Eclipse会尝试通过POM配置自动匹配一些Eclipse内置配置,比如尝试为web项目自动添加webService的支持等。 修改pom后,单击项目右键选择Maven->Update Project的功能就是读取POM配置并使用Eclipse的方式来更新项目的配置。比如,上面的修改Java版本的代码改动后,你就应该执行这个操作: 简单说来,所有pom文件的更新,如果没有及时反馈到Eclipse的项目属性中,你都可以执行这个菜单,快捷键为alt+ F5。
原来的http://maven.aliyun.com是可以搜索包的,但是现在只能作为库使用了。搜索库,最佳去处,自然是https://mvnrepository.com/,搜索后直接复制pom就可以了。
关于版本选择问题,一方面要考虑版本之间的冲突,这是第一原则。其次,如果有多个版本可选(比如日志框架),那么选择下载次数最多的基本不会错,如下图
scope是对dependency的管理措施,scope的可用值有下面几个:
1、 compile 这是默认的scope,表示在运行,打包,测试几个声明周期中,对应的jar包都是存在可用的,最典型的是如果你设置了某个dependency的scope不为compile,则你会发现打包后war文件中没有对应的jar包。
2、 system 这个scope可以用来引用maven库无法下载的包,比如你公司自己的jar包,如果没有maven私服,这是一个快捷的解决办法,典型的例子是谷歌的验证码插件:
<dependency>
<groupId>com.google.code</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>
大家可以尝试后发现提示无法直接下载,解决的办法是https://mvnrepository.com/中搜索到对应版本后找到jar包下载,然后放到项目的某个文件夹中,用下面的代码实现引用:
<dependency>
<groupId>com.google.code</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/kaptcha-2.3.2.jar</systemPath>
</dependency>
3、provided provided表示将来的运行环境会提供该jar包,它在编辑代码时段,maven打包阶段都可用,但不会打包到结果中,比如tomcat自带的包,比如servlet-api,可以这样写:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
这样就不用使用eclipse的方式也就是添加对tomcat运行时的build path了。
1、 test 表示引用的jar包仅在测试类中有效,比如下面的两张图说明了这个问题 :Eclipse认识不同的作用域。
当然test scope的jar包也不会被打包到结果包中,比如war中。
5、runtime 这个作用域用来表示该jar包仅在运行时可用,及在编译打包期间不需要,与compiler相比,仅跳过编译步骤。
本地仓库,默认存放缓存位置是在C盘,C盘是多么重要的地盘,maven依赖不小哇,动不动就是几个G,所以还是将其转移吧,代码参考下面的讲述。 使用aliyun的maven源仍然是最快的,设置的办法有两种,一个是修改eclipse的maven设置中的settings.xml:
an>
<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>D:\mavenrepo</localRepository>
<mirrors>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors> </settings>
一个是在pom中添加源设置(pom的根节点下):
<repositories>
<repository>
<id>public</id>
<name>aliyun nexus</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
添加我为好友,拉您入交流群!
请使用微信扫一扫!