我正在为我的公司编写一个自定义 Gradle 插件,以协助我们产品的集成测试。我的团队希望在主产品构建中构建和使用插件(就像“buildSrc”插件一样),但也需要将插件作为工件发布,供其他团队与我们的产品集成使用。
如果我尝试将它作为独立插件包含在settings.gradle文件中,然后将它作为依赖项包含在 buildscript 中,它显然不起作用,因为首先解释 buildscript 块。
我还尝试从构建脚本中运行另一个构建,如下所示:
buildscript {
def connection = GradleConnector.newConnector()
.forProjectDirectory(file("${project.projectDir}/theplugin"))
.connect()
try {
connection.newBuild()
.forTasks('clean', 'build', 'install')
.run()
} finally {
connection.close()
}
repositories {
mavenLocal()
...
}
dependencies {
classpath 'com.company.product.gradle.theplugin'
}
}
Run Code Online (Sandbox Code Playgroud)
这会导致插件被构建并放置在本地 Maven 存储库中,但随后初始 Gradle 构建直接失败,因为它无法解析新构建的存档。如果我再次运行它,它会起作用。我不明白这种行为。
我可能会用这种方法陷入困境。有没有办法以一种不那么“hacky”的方式来完成这项工作?
我在用户和组之间有多对多的关系.
@Entity
class User {
@OneToMany(cascade = CascadeType.ALL, mappedBy = 'id.user')
Set<GroupMembership> memberships
}
@Entity
class Group {
@OneToMany(cascade = CascadeType.ALL, mappedBy = 'id.group')
Set<GroupMembership> members
}
@Entity
class GroupMembership {
@Embeddable
static class IdKey implements Serializable {
@ManyToOne
@JoinColumn(name = 'userId')
User user
@ManyToOne
@JoinColumn(name = 'groupId')
Group group
}
@EmbeddedId
IdKey id = new IdKey()
}
Run Code Online (Sandbox Code Playgroud)
我希望能够删除用户或组,并删除任何关联的GroupMembership.但是,当我尝试删除用户或组时,我得到一个:
org.h2.jdbc.JdbcSQLException: Referential integrity constraint violation: "FK_96K9TDEV9PO6Q3ISOYIJPWAQU: PUBLIC.GROUP_MEMBERSHIPS FOREIGN KEY(GROUP_ID) REFERENCES PUBLIC.GROUP(ID) (1)"; SQL statement:
delete from group where id=? [23503-186]
Run Code Online (Sandbox Code Playgroud)
我正在使用Hibernate …