本文已参与「新人创作礼」活动,一起开启掘金创作之路。
Maven 常用插件
修改使用的 JDK 版本
Maven 工程默认使用 JDK1.5, 可以根据需要可以设置为 JDK1.8.
- 可以只指定当前项目的版本 :
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
- 也可以设置所有项目的版本.
在 conf / setting.xml 文件. 找到大约 195 行的 profiles 标签. 添加如下配置.
<profiles>
<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>
打包配置文件
- 遇到问题 : maven clean package 打 war 包正常, 不报错. 但是 war 包会丢失 src/main/resources 目录下所有 xml 和 properties 文件.
- 产生原因 : maven 默认不会打包项目 src 下的 xml 和 properties 等配置文件.
- 解决方法 : 需要在 pom.xml 的
<build>节点下添加配置.
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!-- 是否替换资源中的属性-->
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!-- 是否替换资源中的属性-->
<filtering>false</filtering>
</resource>
</resources>
以 UTF-8 格式打包文件
添加配置如下 :
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
编译插件 端口运行插件
指定运行端口 :
<build>
<plugins>
<!-- Java编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- 端口运行插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
编译插件
bug现象:每次修改 pom 之后,idea 自动扫描一遍,然后发现默认的 compile 级别跳到 5.0. 每次手动去setting里修改compile很费事.
引入插件 :
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
Maven 常见问题
更改 Maven 项目名
① 在 Eclipse 中更改
- 项目已经导入到 Eclipse.
- 修改项目文件夹名称. 选中项目 , 右键 , 改名.
- 修改项目组件名称. 选中项目, 右键选择 Properties, 选中 Web Project Settings, 在 Context root 输入要更改的项目名即可.
② 手动更改
- 这种做法最终也能实现改项目名的效果, 只是把 Eclipse 做的工作自己手工完成了。
- 修改项目配置. 找到项目文件夹, 打开
.settings文件夹, 找到 org.eclipse.wst.common.component 文件, 文件结构如下:
<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="xxx">
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
<property name="context-root" value="xxx"/>
<property name="java-output-path" value="/xxx/target/classes"/>
</wb-module>
</project-modules>
- 把文件内的 xxx 全部改为想改的名称, 比如 yyy.
- 更改 pom.xml 配置. 打开 pom.xml 文件, 修改以下三项配置, xxx 就是原项目名.
<artifactId>xxx</artifactId>
<name>xxx Maven Webapp</name>
<finalName>xxx</finalName>
Maven 在 Update Project 时报错
在 项目上右键 -> Maven -> Update Project 的时候, 报错: maven Could not update project SpringBoot-4 configuration java.lang.NullPointerException.
使用的是 Eclipse + Maven.
解决办法 : StackOverFlow 上的解决方案
具体步骤:
- 从 Eclipse 中删除这个项目, 但不要从磁盘中删除;
- 关闭 Eclipse;
- 删除项目目录下的 .settings 目录.
- 删除项目目录下的 .projects 目录.
- 删除项目目录下的 .metadata 目录.
- 重启 Eclipse.
- 导入项目, 并且在导入窗口选择 “Existing Maven Project”.
问题顺利的解决, 我的项目中本地目录没有后边两个, 只删掉 .settings 就生效了.
idea 多 module, module 在 install 时候提示 Could not resolve dependencies for project
ts_parent 项目下有三个 module, 分别是 ts_base, ts_common 和 ts_eureka_server. 其中 ts_base 依赖 ts_common, ts_common 在 mvn install 时正常, ts_base 在 mvn package 的时候, 提示入戏 :
Could not resolve dependencies for project com.ts:ts-base:jar:0.0.1-SNAPSHOT: Failed to collect dependencies at com.fanxl:ts-common:jar:0.0.1-SNAPSHOT
解决办法, 在 ts_parent 上先 install 一下, 然后 install ts_common, 然后 package ts_bese.
\
Maven_报错element-only
引入依赖时报错如下:
报错原因:元素 dependency 排版问题,多加了几个空格。删除多余的空格,进行排版。
Maven 打包 class 注释
Maven 打包之后 class 文件中没有注释了,怎么设置可以让编译之后的 class 文件包含注释?
注释是代码的一部分,编译后就会干掉,如果要保留,使用如下方式:
- 手动打包,那就用
javac -g:source来编译 - 如果是 maven,那就用
maven-source-plugin这个插件