maven项目如果用到JDK内部的一些类、接口(例如:javax.crypto.SecretKey)尤其是做加密的时候,用maven编译可能会出现如下错误:
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /Users/imac/projects/gps/gts/gts-base/src/main/java/xxx.java:[15,20] 程序包javax.crypto不存在
[INFO] 1 errors
这时候需要在编译的时候引入jdk的rt.jar包:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<compilerArguments>
<bootclasspath>${java.home}/lib/jce.jar</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
</plugins>
</build>
如果引用多个jar需要使用;(windows)或者:(macos)来分割,如果这样设置的话,多个平台下开发会很不方便,可以使用变量path.separator代替:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<compilerArguments>
<bootclasspath>${java.home}/lib/rt.jar${path.separator}${java.home}/lib/jce.jar</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
</plugins>
</build>