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'。 我会留意这里,以防你 运行 遇到问题或有任何后续问题。