Maven学习(四)————Eclipse 中的 Maven 工程

引言

创建一个 Maven 版 Hello World。

一、Eclipse 中 Maven 插件的准备工作

除了 JDK 和必须的 Eclipse 之外,还需要在 Eclipse 中设置Maven 相关的信息。这里有最重要的两项 maven 配置:

1.1 Maven Installations

说明:该项设置是指定 Eclipse 需要启动  Maven 程序,Eclipse 有内嵌的 Maven 插件工具,因此有些时候,即便你没有在本地安装 maven ,也依然可以在 Eclipse 完成 Maven 的相关操作。但一般认为内置的 Maven 启动插件不稳定,所以企业中建议指定为自己安装的 Maven。但要注意,当 Eclipse 变换了工作区后,需要重新 设置Maven插件。

1、打开 Window 首选项,设置 Maven Installations:

2、点击 【Apply】按钮,或 【Apply and Close】应用并退出。

1.2 User Settings

说明:此项配置主要是为了指定 conf/settings.xml 的位置,进而可以找到本地仓库的位置。下图路径都是默认配置,建议不要修改,不过也可以根据磁盘大小变换路径。

二、Eclipse 中的Maven 工程

在 Eclipse 中操作 Maven 工程主要为了解决三个问题:

1、创建 Maven 版 Java 工程

2、创建 Maven 版 Web 工程

3、执行 Maven 命令

2.1 创建 Maven Java Project

首先在 Package 视图中新建 Maven Project:

注意:在下图中,必须勾选 "Create a simple project (skip archetype selection)"  复选框,否则将无法生成理想的 Maven 项目结构。

填写必要的 Maven 信息(GAV)然后点击 【Finish】即可完成 Maven 版 Java 工程的创建。

2.2 在 Eclipse 中执行 Maven 命令

在 Eclipse 中执行 Maven 命令非常简单,可以在项目右键(或 pom 文件上 右键)执行 “Run As” :

点击 2 Maven build... 可以填写希望执行的 maven 指令,如:

点击 Run 查看控制台执行结果:

【额外补充】  在前面的文章中,我们已经了解过了 Maven 的声明周期、目标(Goal)、以及命令的书写方式,在 Eclipse 中,实际上也是类似的,在上面的执行计划配置会话框中的 Goal 一栏尤为明显。我们不仅可以在 Goal 中填入 compile 执行 编译目标,还可以执行多组 Maven 命令,如 clean install ,并且,Eclipse 会保存“执行计划”,方便下次使用:

上图的 ${project_loc} 实际上可以在输入框的右下侧 “Variables...” 中找到,代表项目定位,具体这个表达式究竟是 Eclipse 自带的隐含变量还是 Maven 的变量目前我还没搞明白(如果有知道的小伙伴希望文末留言,或者提醒一下查询的关键字如:“Eclipse 变量”)。

2.3 Maven Web Project

创建 web 工程和 java 工程类似,且都需要勾选"Create a simple project (skip archetype selection)" 复选框。

不过在打包方式上, web 工程需要选择 war包

生成的 web 工程 由于本身目录结构不符合以往动态web 工程的目录结构,所以需要进一步进行转化,但是由于目前在 STS上找不到 Dynamic Web Project 的选项了(只有静态web 工程,目前还不是很了解两者的区别和联系),所以暂时了解到这里。

 

附录A:Maven 项目的 jdk 版本问题

在创建完 Maven Java Project 之后,可能会遇到这样的问题。刚刚创建的项目中的 JRE System Library 是 JavaSE-1.7 或者 更低。

这个问题可以通过修改项目的 JDK依赖版本来解决:

解决方法一:

首先右键项目,选择Properties 属性,并依次修改 "Java Build Path" 和 "Java Compile"(都比较简单):

 

解决方法二:

第二种解决方法是一劳永逸的办法——在首选项的Maven User Settings 所指向的User Setting 文件 settings.xml 中配置 JDK 的使用版本。后续即可保持统一的 JDK 版本,一劳永逸:

<profiles><!-- 配置 maven 的 JDK 版本--><profile><id>jdk-1.8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties></profile>
</profiles>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558778.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构与算法————稀疏数组

引言 数据压缩方面&#xff0c;我们往往可以通过稀疏数组来保存有效数据&#xff0c;节省存储空间。 一、稀疏数组的概念 当一个数组中大部分元素是0&#xff0c;或为同一个值的时候&#xff0c;可以使用稀疏数组来保存数组。 它是一个十分有效的存储结构&#xff0c;便于节…

Linux进阶之路————crond定时任务调度

引言 crond 的概念和 crontab 是不可分割的。crontab 是一个命令&#xff0c;而 crond 是Linux 下用来周期性执行某种任务或等待处理某些事件的守护进程&#xff0c;类似于 Windows 下的计划任务。 当装完操作系统之后&#xff0c;默认便会安装 crond 服务工具&#xff0c;并…

Linux进阶之路————Linux磁盘分区与挂载

引言 对于Linux来说&#xff0c;无论有几个分区&#xff0c;分给哪一目录使用&#xff0c;它归根结底就只有一个根目录 / &#xff0c;一个独立且唯一的文件结构&#xff0c;Linux 中每个分区都是用来组成整个文件系统的一部分。 Linux采用一种叫“载入”的处理方法&#xff…

Maven学习(五)————依赖的特性辨析

引言 在Maven 中&#xff0c;依赖有一些特性必须我们掌握&#xff0c;如依赖的传递性。 一、依赖的传递性 其实依赖的传递性非常好理解。 上图&#xff0c;如果 Maven 项目 B 已经依赖了 C &#xff0c;A 又依赖了 B&#xff0c;那么 A 不需要再在自己的pom 中重复引入 C 的…

解决pom文件第一行报错(unknown)-亲测有效

原文链接&#xff1a;https://blog.csdn.net/u010947534/article/details/93743582 问题&#xff1a; Eclipse导入maven项目时&#xff0c;或者新建一个springboot项目时&#xff0c;pom.xml文件第一行报错&#xff0c;没有错误信息提示&#xff0c;就一个Unknown&#xff0c…

Oracle中start with xx connect by prior 语句解析

Oracle中start with xx connect by prior 语句解析 ​ Oracle这种的start with语句主要对B型树的数据进行递归查询.可以指定数据树上的任一节点,然后查找到它所有的子节点或者父节点. ​ 现在有如下图的数据: 我们先想数据库插入数据,这里用到oracle的批量插入写法# 1 建表 CRE…

Java NIO ———— Buffer 缓冲区详解

引言 缓冲区是一个用于特定基本类型的容器。由java.nio 包定义&#xff0c;所有缓冲区都是 Buffer 抽象类的子类。 Java NIO 中的 Buffer &#xff0c;主要用于与NIO 通道进行交互。数据从通道存入缓冲区&#xff0c;从缓冲区取出到通道中。 一、创建缓冲区 缓冲区的本质是 …

基本类型理解巩固及补码原理总结

引言 本篇文章属于计算机基础通识&#xff0c;主要讨论&#xff1a;有符号类型、无符号类型的区别&#xff0c;byte、int 等类型的取值范围&#xff0c;最大值最小值的计算公式的由来&#xff0c;原码、反码、补码转换公式。 有符号类型与无符号类型 在 Java 中的八大基本类…

LeetCode(#118)————杨辉三角形

问题描述 给定一个非负整数 numRows&#xff0c;生成杨辉三角的前 numRows 行。 在杨辉三角中&#xff0c;每个数是它左上方和右上方的数的和。 示例: 输入: 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1] ] 实现方法 class Solution {public List<List<Intege…

JVM001_类文件结构

无关性的基石 实现语言无关性的基础是虚拟机和字节码存储格式。Java虚拟机不与任何语言绑定&#xff08;包括Java&#xff09;&#xff0c;它只与‘Class文件’这种特定的二进制文件格式所关联。Class文件中包含了Java虚拟机指令集、符号表以及其它辅助信息。出于安全考虑&…

Maven学习(六)————企业Maven项目最佳实践

引言 在《Maven学习&#xff08;三&#xff09;————Maven核心概念&#xff08;二&#xff09;》中&#xff0c;学到了Maven 继承和 Maven 聚合的概念&#xff0c;这两个概念&#xff0c;解决的问题分别是&#xff1a; 1、解决一些公共依赖统一版本的问题。 2、统一打包部署…

JVM003_属性表

属性表 预备知识 javac -g Xxx.java 在生成class文件的时候生成所有调试信息javap -v Xxx.class 输出附加信息 属性表结构 类型名称数量备注u2attribute_name_index1属性名称索引&#xff0c;指向一个CONSTANT_Utf8_info型常量的索引u4attribute_length1该属性表的长度u1in…

Lombok ——自动化方法生成器

引言 此文为简单的Lombok 演示。 Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具&#xff0c;通过使用对应的注解&#xff0c;可以在编译源码的时候生成对应的方法。简而言之&#xff0c;一句话就是&#xff1a;通过简单的注解…

LeetCode(#26)————删除排序数组中的重复项

题目 给定一个排序数组&#xff0c;你需要在原地删除重复出现的元素&#xff0c;使得每个元素只出现一次&#xff0c;返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums […

JVM006_类加载的过程

类加载 类加载时机 类加载的过程 新术语 类加载器 简单的理解为将类转换为二进制流的类或接口。 数组的元素类型 数组去掉所有维度的类型。 数组的组件类型 数组去掉一个维度的类型。 基本块 按照控制流拆分的代码块。 1. 加载 加载是类加载过程的一个阶段。加载阶段主…

服务端开发——云服务器的端口转发设置(SSH隧道)

引言 本篇博客介绍端口转发的知识&#xff0c;并详细阐述操作和设置步骤。这是因为在实际工作中&#xff0c;会有很多企业从安全的角度考虑&#xff0c;为线上或重要的服务器设置一个跳板机&#xff08;堡垒机&#xff09;&#xff0c;避免远程开发人员直接操作&#xff0c;是…

Shiro————核心设计思想

引言 以此篇博客为引&#xff0c;开启一个新的专栏分类——Shiro。 之前在工作中有比较快速的学习过Shiro安全框架&#xff0c;但经过一年的荒废&#xff0c;已经不是很熟悉了&#xff0c;通过这个系列&#xff0c;深入研究和学习Shiro的一些知识&#xff0c;填补安全管理方面…

Web应用安全————账号冻结与 Session 实时失效

引言 开篇时说些题外话&#xff0c;最近刚刚被公司CY&#xff0c;不过很快找到了下家&#xff0c;也同时拿到了三家公司的Offer。一周面试下来&#xff0c;总体感觉面试题少了&#xff0c;不过多了上机程序题。新公司是做外包&#xff0c;不过相比于上一家公司&#xff0c;也算…

Web应用安全————Shiro 解决会话固定漏洞

引言 承接上一篇《Web应用安全————账号冻结与 Session 实时失效》关于 session 的学习&#xff0c;本篇博客聚焦如何通过 shiro 解决会话固定导致的漏洞问题。 首先&#xff0c;没怎么接触过应用安全方面的小伙伴可能会发起疑问 - 什么是会话固定&#xff1f; 简单来说&…

Web应用安全————多点登录互斥

引言 在实际生活中&#xff0c;很多网站都做了多点登录互斥的操作&#xff0c;简单来说就是同一个账号&#xff0c;只能在一台电脑上登录&#xff0c;如果有人在其他地方登录&#xff0c;那么原来登录的地方就会自动下线&#xff0c;再进行操作就会弹出登录界面。 实现思路 …