我开始摆弄Hibernate Validator,OSS项目,以便稍后分叉它。但我无法在本地运行测试。我遵循了 Contributing to Hibernate Validator 的官方文档,其中有一个 Building from Source 的部分。
我已经对此议论了几个月了,上周末,一位朋友决定调查一下。最初,就像在我的电脑上一样,它失败了。但他检查了
8.0.1.Final
标签,结果成功了。
昨晚很晚,我尝试了一下,但失败了。碰巧的是:
3.9.3
,我尝试过 3.9.0
& 3.9.4
一些模块测试通过了 Maven
3.9.4
和 Oracle 的 JDK 17:
Apache Maven 3.9.4 (dfbb324ad4a7c8fb0bf182e6d91b0ae20e3d2dd9)
Maven home: /home/salathiel/.local/bin/maven
Java version: 17.0.8, vendor: Oracle Corporation, runtime: /home/salathiel/.local/opt/jdk-17.0.8
Default locale: en_GB, platform encoding: UTF-8
OS name: "linux", version: "6.2.0-26-generic", arch: "amd64", family: "unix"
我不认为像 Hibernate 这样的 Java 项目只能在 Windows 上开发,也不能使用特定的 JDK 版本/版本进行编译。我一定错过了一些基本的东西。
我担心两个奇怪的异常:
这是堆栈跟踪:
[INFO] Running TestSuite
[ERROR] Tests run: 982, Failures: 963, Errors: 0, Skipped: 0, Time elapsed: 24.262 s <<< FAILURE! - in TestSuite
[ERROR] testUnknownProviderConfiguredInValidationXml(org.hibernate.beanvalidation.tck.tests.bootstrap.customprovider.BootstrapNonAvailableValidationProviderTest) Time elapsed: 0.037 s <<< FAILURE!
org.testng.TestException:
Expected exception of type class jakarta.validation.ValidationException but got java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "setContextClassLoader")
at org.hibernate.beanvalidation.tck.tests.bootstrap.customprovider.BootstrapNonAvailableValidationProviderTest.testUnknownProviderConfiguredInValidationXml(BootstrapNonAvailableValidationProviderTest.java:58)
[...]
Expected exception of type class jakarta.validation.ValidationException but got java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "setContextClassLoader")
at org.hibernate.beanvalidation.tck.tests.xmlconfiguration.versioning.UnknownVersionInValidationXmlTest.testValidationXmlWithUnknownSchemaVersion(UnknownVersionInValidationXmlTest.java:43)
[...]
[INFO]
[ERROR] Tests run: 982, Failures: 963, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
Maven 围绕可组合的 goals 展开(例如:
test
目标由 compile
目标组成,install
和 test
分别也是如此)。
据我所知,
install
目标将是test
、compile
、package
和copy artifact to local repository
。
为了避免后者的副作用(污染我的本地存储库,因为它是跨项目共享的),我一直在做
mvn clean test
...直到今天早上:
# More tests passed with this
mvn clean install
hibernate-validator-distribution
然后失败了:
hibernate-validator-distribution:生成 Javadoc 报告时发生错误:无法找到 javadoc 命令:环境变量 JAVA_HOME 未正确设置。
我的
~/.bashrc和 ~/.ondirrc 中都有
JAVA_HOME="..."
,但修复方法是:
export JAVA_HOME="$JAVA_HOME"
自我提醒:我想我不知道我不知道的事情。