Nexus 是否接受脚本中的 Groovy 字符串?
Does Nexus accept Groovy strings in script?
在 运行 一个 groovy 脚本作为创建角色的任务之后:
security.addRole(// id
roleDeveloper,
// name
roleDeveloper,
// description
"A developer on ${repoCap} group",
// privileges
["nx-repository-view-maven2-${repo}-dependencies-browse",
"nx-repository-view-maven2-${repo}-dependencies-read"],
// roles
["dw-all-public-repos"])
我无法访问 角色 菜单。我收到以下错误:
com.orientechnologies.orient.core.exception.ODatabaseException: Error on deserialization of Serializable DB name="security"
[...]
Caused by: java.lang.ClassNotFoundException: org.codehaus.groovy.runtime.GStringImpl
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) [na:1.8.0_91]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) [na:1.8.0_91]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) [na:1.8.0_91]
at org.apache.felix.framework.BundleWiringImpl.doImplicitBootDelegation(BundleWiringImpl.java:1782) [na:na]
at org.apache.felix.framework.BundleWiringImpl.searchDynamicImports(BundleWiringImpl.java:1717) [na:na]
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1552) [na:na]
at org.apache.felix.framework.BundleWiringImpl.access0(BundleWiringImpl.java:79) [na:na]
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2018) [na:na]
在 运行 几个版本的 Nexus (3.x) 上进行了几次测试(有和没有字符串插值)后,看起来某些参数支持字符串插值,但 不支持特权参数。
这是一个已知问题吗?
由于上述错误,我的 角色 菜单无法访问,有没有办法解决它? (我试图用脚本删除它但失败了,因为 delete 首先执行 load)
对于亚历山大的问题,我们深表歉意。看起来您必须直接连接到数据库才能修复有问题的记录。有关如何使用 Nexus 离线执行此操作的说明,请参见此处:https://support.sonatype.com/hc/en-us/articles/115002930827-Accessing-the-OrientDB-Console
特别是您要连接的数据库是 'security':
connect plocal:data/db/security admin admin
您需要 inspect/delete 的表格是 'privilege' 和 'role'。
我会留意这里,以防你 运行 遇到问题或有任何后续问题。
在 运行 一个 groovy 脚本作为创建角色的任务之后:
security.addRole(// id
roleDeveloper,
// name
roleDeveloper,
// description
"A developer on ${repoCap} group",
// privileges
["nx-repository-view-maven2-${repo}-dependencies-browse",
"nx-repository-view-maven2-${repo}-dependencies-read"],
// roles
["dw-all-public-repos"])
我无法访问 角色 菜单。我收到以下错误:
com.orientechnologies.orient.core.exception.ODatabaseException: Error on deserialization of Serializable DB name="security"
[...]
Caused by: java.lang.ClassNotFoundException: org.codehaus.groovy.runtime.GStringImpl
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) [na:1.8.0_91]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) [na:1.8.0_91]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) [na:1.8.0_91]
at org.apache.felix.framework.BundleWiringImpl.doImplicitBootDelegation(BundleWiringImpl.java:1782) [na:na]
at org.apache.felix.framework.BundleWiringImpl.searchDynamicImports(BundleWiringImpl.java:1717) [na:na]
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1552) [na:na]
at org.apache.felix.framework.BundleWiringImpl.access0(BundleWiringImpl.java:79) [na:na]
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2018) [na:na]
在 运行 几个版本的 Nexus (3.x) 上进行了几次测试(有和没有字符串插值)后,看起来某些参数支持字符串插值,但 不支持特权参数。
这是一个已知问题吗?
由于上述错误,我的 角色 菜单无法访问,有没有办法解决它? (我试图用脚本删除它但失败了,因为 delete 首先执行 load)
对于亚历山大的问题,我们深表歉意。看起来您必须直接连接到数据库才能修复有问题的记录。有关如何使用 Nexus 离线执行此操作的说明,请参见此处:https://support.sonatype.com/hc/en-us/articles/115002930827-Accessing-the-OrientDB-Console
特别是您要连接的数据库是 'security':
connect plocal:data/db/security admin admin
您需要 inspect/delete 的表格是 'privilege' 和 'role'。 我会留意这里,以防你 运行 遇到问题或有任何后续问题。