一、前言

  说起Maven,是在我上上东家接触的,掌握的还不错,因为种种原因,上家公司没有使用太多大众技术,我也没有太多施展的机会,对于以前掌握的技术,很多都荒废了,最近使用起来发现有点儿吃力了,为了加深自己对Maven的理解,以及杜绝下次再浪费时间到处查资料,特此开篇博客记录在使用Maven时一些小技巧~

二、正文

  首先,需要说明一点,Maven可以控制和作用整个项目的生命周期,它是通过在每个生命周期中使用对应的插件来达到上面的目的的,所以很多时候,我们要改变默认插件的行为,就需要自己指定在对应阶段执行什么插件,并且指定插件需要执行的行为!理解和记住这句话,在使用maven过程中可以解决很多问题~

  1、安装jar包到本地仓库命令(蓝色加粗部分自己根据实际情况修改)

  1. mvn install:install-file -DgroupId=oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar -Dfile=D:\jars\ojdbc14-10.2.0.4.0.jar
  1. <dependency>
  2. <groupId>oracle</groupId>
  3. <artifactId>ojdbc14</artifactId>
  4. <version>10.2.0.4.0</version>
  5. </dependency>

  2、安装jar到私服nexus中(蓝色加粗部分自己根据实际情况修改)

  1. mvn deploy:deploy-file -DgroupId=oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar -Dfile=D:\jars\ojdbc14-10.2.0.4.0.jar
    -Durl=http://localhost:8081/repository/thirdparty/ -DrepositoryId=thirdparty
  1. <dependency>
  2. <groupId>oracle</groupId>
  3. <artifactId>ojdbc14</artifactId>
  4. <version>10.2.0.4.0</version>
  5. </dependency>

  3、指出源代码开发时所用的jdk版本,设定编译成.class文件时编译使用的jdk版本

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.apache.maven.plugins</groupId>
  5. <artifactId>maven-compiler-plugin</artifactId>
  6. <version>2.5.1</version>
  7. <configuration>
  8. <source>1.8</source>
  9. <target>1.8</target>
  10. </configuration>
  11. </plugin>
  12. </plugins>
  13. </build>

  4、使用maven生成可运行的jar包(蓝色加粗部分自己根据实际情况修改)

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.apache.maven.plugins</groupId>
  5. <artifactId>maven-dependency-plugin</artifactId><!--将这个项目依赖的jar包放置在lib目录下-->
  6. <executions>
  7. <execution>
  8. <id>copy</id>
  9. <phase>package</phase>
  10. <goals>
  11. <goal>copy-dependencies</goal>
  12. </goals>
  13. <configuration>
  14. <outputDirectory>
  15. ${project.build.directory}/lib
  16. </outputDirectory>
  17. </configuration>
  18. </execution>
  19. </executions>
  20. </plugin>
  21. <plugin>
  22. <groupId>org.apache.maven.plugins</groupId>
  23. <artifactId>maven-jar-plugin</artifactId>
  24. <configuration>
  25. <archive>
  26. <manifest>
  27. <mainClass>com.yywlw.main.Entrance</mainClass <!--指定项目Main函数入口-->
  28. <addClasspath>true</addClasspath>
  29. <classpathPrefix>lib/</classpathPrefix>
  30. </manifest>
  31. </archive>
  32. <classesDirectory>
  33. </classesDirectory>
  34. </configuration>
  35. </plugin>
  36. </plugins>
  37. <build>

  以上配置的最终效果就是在target下多出一个lib目录,里面包含项目使用到的一些第三方的jar,或者自己的其他工程的jar,然后主jar包的MF文件中多了Main-Class和Class-Path的配置信息,这是保证该jar包可执行的条件:

  

     5、当编译项目的时候,控制台报“错误: 编码GBK的不可映射字符”出现原因,以及解决办法

  出现错误的原因:在maven的编译插件中声明正确的字符集编码编码——编译使用的字符集编码与代码文件使用的字符集编码一致!!

安装系统之后,一般中文系统默认字符集是GBK。我们安装的软件一般都继承使用操作系统的默认字符集。所以当在中文XP或者win7系统开发,在使用maven(mvn compile)编译项目的时候,就会出现“编码 gbk 的不可映射字符”: 这个是由于代码使用的UTF-8,而maven编译的时候使用的GBK的缘故。 可以通过修改项目的pom文件,可以告诉maven这个项目使用UTF-8编码来编译。

解决办法:

1) 在pom.xml文件中增加“project.build.sourceEncoding”配置

  1. <!-- 指明编译源代码时使用的字符编码,maven编译的时候默认使用的GBK编码, 通过project.build.sourceEncoding属性设置字符编码,告诉maven这个项目使用UTF-8来编译 -->
  2. <properties>
  3. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  4. </properties>

  2)pom.xml的/project/build/plugins/下的编译插件声明 中加入下面的配置:

  1. <plugin>
  2. <artifactId>maven-compiler-plugin</artifactId>
  3. <configuration>
  4. <source>1.6</source>
  5. <target>1.6</target>
  6. <!-- 指明编译源代码时使用的字符编码,
  7. maven编译的时候默认使用的GBK编码,
  8. 通过encoding属性设置字符编码,
  9. 告诉maven这个项目使用UTF-8来编译 -->
  10. <encoding>utf8</encoding>
  11. </configuration>
  12. </plugin>

三、链接

1、http://blog.csdn.net/alanzyy/article/details/47400591

四、联系本人

  为方便没有博客园账号的读者交流,特意建立一个企鹅群(纯公益,非利益相关),读者如果有对博文不明之处,欢迎加群交流:261746360,小杜比亚-博客园

好记性不如烂笔头之Maven使用小记的更多相关文章

  1. 好记性不如烂笔头-linux学习笔记1

    好记性不如烂笔头-linux学习笔记1 linux的文件系统有ext2,ext3,ext4,目前主流是ext4 linux主要用于服务器级别的操作系统,安装时需要至少2个分区 一个是交换分区,swap ...

  2. 好记性不如烂笔头-Mysql查找如何判断字段是否包含某个字符串

    好记性不如烂笔头-Mysql查找如何判断字段是否包含某个字符串 利用mysql 字符串函数 find_in_set(); SELECT * FROM users WHERE find_in_set(' ...

  3. [nodejs]修改全局包位置,修复npm安装全局模块命令失效。好记性不如烂笔头

    修复npm -g 全局安装命令失效,好的吧不得不承认,好记性不如烂笔头,我居然会忘记方法哈哈哈 Linux安装nodejs sudo apt install node sudo apt install ...

  4. Common lang一些边界方法总结(好记性不如烂笔头,需要慢慢积累).一定要利用好现有的轮子,例如Apache common与Google Guava

    好记性真是不如烂笔头啊!!!! 如下代码: List<String> list = new ArrayList<String>(); list.add("1" ...

  5. SQL-LINQ-Lambda语法对照,好记性不如烂笔头

    忘记的时候就翻阅翻阅吧~~ SQL LINQ Lambda SELECT *FROM HumanResources.Employee from e in Employees select e Empl ...

  6. 好记性不如烂笔头85-spring3学习(6)-BeanFactory 于bean生命周期

    假设BeanFactory为了产生.管理Bean, 一个Bean从成立到毁灭.它会经过几个阶段运行. 据我所知,一般bean包括在生命周期:设定,初始化,使用阶段,四个核心阶段销毁. 1.@Bean的 ...

  7. 【好记性不如烂笔头】死锁之java代码

    死锁: 是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称 ...

  8. 好记性不如烂笔头77-多线程-Thread子类的线程对象是不同的

    Thread子类的线程对象是不同的. 比方: EasySelfThread thread = new EasySelfThread(); //同一个线程对象 Thread t1 = new Threa ...

  9. 好记性不如烂笔头-linux学习笔记2kickstart自动化安装和cacti

    kickstart自动化安装的逻辑梳理 主要是安装tftp nfs dhcp 然后配置kickstart 原来就是先安装tftp 可实现不同机器的文件下载 然后在安装nfs 就是主服务器的文件系统 然 ...

随机推荐

  1. golang 兼容不同json结构体解析实践

    线上服务器,同一个web接口有时需要兼容不同版本的结构体.这种情况思路是使用interface{}接收任意类型数据,结合reflect包处理. 如下,http接口调用者会传入不同的json结构数据(单 ...

  2. 苏州Uber人民优步奖励政策

    人民优步(People's Uber)资费标准 起步价(Base Fare):¥0.00 每公里(Per KM):¥1.65 每分钟(Per Min):¥0.30 最低价(Min Fare):¥9.0 ...

  3. katalon系列五:使用Katalon Studio手动编写WEB自动化脚本

    上一篇主要讲了怎么录制脚本,这次我们看看怎么手动编写脚本,接下来就编写一个简单的用百度搜索的脚本. 1.我们先抓取页面上的元素,点击工具栏上的Spy Web按钮(地球上有个绿点),URL输入百度地址, ...

  4. 【CentOS】下安装RabbitMQ教程

    系统版本: 安装依赖: 由于RabbitMQ依赖Erlang, 所以需要先安装Erlang. Erlang的安装方式大概有两种: (1) Erlang Solution安装(推荐) wget http ...

  5. [JSON].value( keyPath )

    语法:[JSON].value( keyPath ) 返回:[String | Null] 说明:获取指定键名路径值的字符串格式 示例: Set jsonObj = toJson("{bod ...

  6. JavaScriptSerializer的实现-常用JsonHelper类

    最近开始自己写自己的项目了,终于鼓起勇气迈出了自己认为的这一大步! 先来通用的helper类和大家分享一下 ,第一个是Object转为json序列的类,这个网上有很多,但我实践了一下大部分都不能用的, ...

  7. django request bug

    bug描述:django请求request接收数据时,如果参数中包含分号时,会导致分号后面的消息丢失. 比如前台js调用代码 $.post('/get_params', { "A" ...

  8. 统计单词数:string函数使用

    题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给 ...

  9. 线性代数之——对角化和 A 的幂

    利用特征向量的属性,矩阵 \(A\) 可以变成一个对角化矩阵 \(\Lambda\). 1. 对角化 假设一个 \(n×n\) 的矩阵 \(A\) 有 \(n\) 个线性不相关的特征向量 \(x_1, ...

  10. c# html 导出word

    [CustomAuthorize]        public FileResult ExportQuestionCenterWord(SearchBaseQuestion search)       ...