mvnd打包报这样的错误:Parameter 'localRepository' is deprecated core expression; Avoid use of ArtifactRepository type. If you need access to local repository, switch to '${repositorySystemSession}' expression and get LRM from it instead
时间: 2024-03-27 14:37:39 浏览: 232
这个错误提示是因为 Maven 3.8.1 开始废弃了 `localRepository` 参数,建议使用 `${repositorySystemSession}` 表达式代替,从中获取本地仓库对象。要解决此问题,您可以尝试升级 Maven 版本,或者在 `pom.xml` 文件中添加以下配置:
```
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<release>11</release>
<compilerArgs>
<arg>--add-exports=java.base/jdk.internal.module=ALL-UNNAMED</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
```
这个配置会将编译器设置为 JDK 11,并添加一个参数以解决此错误。如果您使用的是 JDK 11 以上版本,则不需要添加此参数。
相关问题
mvnd打包报错:Parameter 'localRepository' is deprecated core expression; Avoid use of ArtifactRepository type. If you need access to local repository, switch to '${repositorySystemSession}' expression and get LRM from it instead
这个错误是因为 Maven 3.5.0 之后的版本中,`ArtifactRepository` 被标记为过时的类型,建议使用 `${repositorySystemSession}` 表达式,并从中获取 `LocalRepositoryManager`。这个问题可以通过在 `pom.xml` 文件中增加以下配置来解决:
```xml
<project>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<!-- Use repositorySystemSession to avoid deprecated warning -->
<repositorySystemSession>${repositorySystemSession}</repositorySystemSession>
...
</configuration>
</plugin>
...
</plugins>
...
</build>
...
</project>
```
这样配置之后,再执行 `mvn package` 命令,应该就可以避免这个错误了。
Parameter 'localRepository' is deprecated core expression; Avoid use of ArtifactRepository type. If you need access to local repository, switch to '${repositorySystemSession} ' expression and get LRM from it instead.
这个警告信息是关于 Maven 项目中的本地仓库的问题。它告诉我们使用了过时的参数 'localRepository',并建议我们使用 '${repositorySystemSession}' 表达式来获取本地仓库。如果你需要访问本地仓库,可以使用以下代码来获取本地仓库路径:
```java
RepositorySystemSession session = ...;
LocalRepositoryManager localRepositoryManager = session.getLocalRepositoryManager();
File localRepositoryDirectory = localRepositoryManager.getRepository().getBasedir();
```
这段代码将从 `RepositorySystemSession` 中获取本地仓库管理器 `LocalRepositoryManager`,然后通过 `getBasedir()` 方法获取本地仓库目录路径。这样就可以避免使用过时的参数 'localRepository',同时也可以获得本地仓库路径。
阅读全文