我有一个现有的使用maven构建的java的web工程,用的jdk是17,通过打成jar包运行。我想要配置加入kotlin,实现java和kotlin混编的运行和打包。
为此先弄一个测试的maven构建的java工程,我先把现有java的maven工程的pom文件,在去除jar包后的内容,交给ai,然后按照ai回答给的pom代码修改测试混编,我目前混编只能运行,但打包总是失败,失败的信息内容提示jdk版本有问题,但不知道怎么解决这个问题。如下错误内容
[INFO]
[INFO] ------------------------< com.test:TestWebApp >-------------------------
[INFO] Building TestWebApp 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ TestWebApp ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ TestWebApp ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 1 source file to D:\workspace\idea\testJavaKt\TestWebApp\target\classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] 不再支持源选项 5。请使用 7 或更高版本。
[ERROR] 不再支持目标选项 5。请使用 7 或更高版本。
[INFO] 2 errors
[INFO] -------------------------------------------------------------
pom.xml代码
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>TestWebApp</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>
<properties>
<java.version>17</java.version>
<kotlin.version>2.0.0</kotlin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version>
</dependency>
<!-- 可选测试依赖 -->
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test</artifactId>
<version>${kotlin.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<defaultGoal>clean install</defaultGoal>
<finalName>TestMainWeb1</finalName>
<plugins>
<!-- 移除原来的maven-compiler-plugin,由Kotlin插件接管 -->
<!-- 保留surefire插件配置 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<!-- 新增Kotlin插件 -->
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 关键配置:将源目录指向现有的 Java 目录 -->
<sourceDirs>
<sourceDir>src/main/java</sourceDir>
</sourceDirs>
<testSourceDirs>
<testSourceDir>src/test/java</testSourceDir>
</testSourceDirs>
<args>
<arg>-Xjvm-default=all</arg> <!-- 可选:启用默认接口方法实现 -->
</args>
<jvmTarget>17</jvmTarget> <!-- Java 17目标版本 -->
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>demo</finalName>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>start.AppStart1</mainClass>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resources>
<!--
<resource>demo-config-dev.txt</resource> -->
<!-- <resource>.PDF</resource> -->
<!-- <resource>READ.md</resource> -->
</resources>
</transformer>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>module-info.class</exclude>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
如何解决这个问题,是不是pom里缺了什么配置?我目前看网上的maven的java和kotlin的混编都是基于jdk8的,没看到基于jdk17的java与kotlin的混编配置方式