Maven插件maven-resources-plugin在copy-resources的时候的Bug

最近一个应用用到了Jetty SSL方式,开发的时候把测试用的keystore文件放到conf目录下,
然后mvn package进行打包,可是运行的时候发现始终报错:
java.io.IOException: Invalid keystore format
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:633)
at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:38)
at java.security.KeyStore.load(KeyStore.java:1185)
at org.mortbay.jetty.security.SslSocketConnector.createFactory(SslSocketConnector.java:215)
at org.mortbay.jetty.security.SslSocketConnector.newServerSocket(SslSocketConnector.java:423)
at org.mortbay.jetty.bio.SocketConnector.open(SocketConnector.java:73)
at org.mortbay.jetty.AbstractConnector.doStart(AbstractConnector.java:283)
at org.mortbay.jetty.bio.SocketConnector.doStart(SocketConnector.java:147)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.Server.doStart(Server.java:235)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)



通过比较原始的keystore文件和打包后的keystore文件,发现文件大小已经改变了。
看来是maven-resources-plugin在copy-resources的时候的改动的,可能会编码设定有关系。
暂时还没有找到解决方法,Mark一下先。
在使用 `maven-resources-plugin` 时,如果遇到 `Cannot resolve plugin org.apache.maven.plugins:maven-resources-plugin:x.x.x` 错误,通常与 Maven 插件解析失败或本地仓库中插件文件不完整有关。以下是几种常见原因及对应的解决方案: ### 1. **检查 Maven 本地仓库完整性** 错误可能源于本地 Maven 仓库中插件的 JAR 文件缺失,仅存在 `.pom.lastUpdated` 文件。这种情况下,Maven 无法成功解析插件。 解决方案: - 删除本地仓库中相关的插件目录(路径格式为:`~/.m2/repository/org/apache/maven/plugins/maven-resources-plugin/`)。 - 然后运行 `mvn clean install -U` 命令强制 Maven 重新下载插件依赖[^1]。 ### 2. **配置 Maven 仓库地址** 确保 `settings.xml` 中配置的 Maven 仓库地址正确且可用。如果使用了私有仓库或镜像,需检查仓库的网络连接和权限设置。 示例配置: ```xml <mirrors> <mirror> <id>alimaven</id> <name>Aliyun Maven</name> <url>https://maven.aliyun.com/repository/public</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> ``` 上述配置可加速插件下载并提高解析成功率[^1]。 ### 3. **更新 Maven 插件版本** 确保 `pom.xml` 中指定的 `maven-resources-plugin` 版本是稳定版本,并且与当前 Maven 版本兼容。 示例配置: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.3.0</version> </plugin> </plugins> </build> ``` 如果当前版本存在问题,可以尝试切换到较稳定的版本(如 `3.2.1`)。 ### 4. **清理 Maven 缓存** 运行以下命令清理 Maven 缓存并重新构建项目: ```bash mvn dependency:purge-local-repository ``` 该命令会清除本地仓库中与项目相关的依赖,然后重新下载,有助于解决插件解析失败的问题[^2]。 ### 5. **检查网络连接** 如果 Maven 无法访问远程仓库,也可能导致插件解析失败。确保网络连接正常,并尝试更换镜像源或使用代理设置。 示例代理配置: ```xml <proxies> <proxy> <id>example-proxy</id> <active>true</active> <protocol>http</protocol> <host>proxy.example.com</host> <port>8080</port> <username>user</username> <password>password</password> </proxy> </proxies> ``` 确保代理配置正确,并测试连接性[^2]。 ### 6. **检查 JDK 环境** 某些情况下,Maven 插件需要 JDK 环境运行。如果使用的是 JRE,可能会导致编译失败。 验证方法: ```bash java -version javac -version ``` 如果 `javac` 命令不可用,说明当前环境是 JRE,需安装 JDK 并配置环境变量[^3]。 ### 7. **升级 Maven 版本** 确保使用的是较新的 Maven 版本(如 `3.8.x` 或更高)。旧版本可能存在兼容性问题。 升级方法: - 下载最新版本的 Maven- 更新 `PATH` 和 `MAVEN_HOME` 环境变量。 - 验证升级结果: ```bash mvn -v ``` ### 8. **启用 Maven 调试日志** 运行以下命令以启用调试日志,获取更详细的错误信息: ```bash mvn clean install -X ``` 通过日志分析插件解析失败的具体原因,例如网络问题、权限问题或配置错误。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值