gradle项目中最新JOOQ库的JOOQ插件
在我的JavaGradle项目中,我在查找一个工作的JOOQ插件或为最新的JOOQ库配置它时遇到了问题 我发现了以下插件:gradle项目中最新JOOQ库的JOOQ插件,gradle,jooq,Gradle,Jooq,在我的JavaGradle项目中,我在查找一个工作的JOOQ插件或为最新的JOOQ库配置它时遇到了问题 我发现了以下插件: 由于错误消息,此操作对我无效: Could not find any version that matches org.jooq:jooq-codegen-gradle:latest.integration. Searched in the following locations: http://repo1.maven.org/maven2/org/jooq/
Could not find any version that matches org.jooq:jooq-codegen-gradle:latest.integration.
Searched in the following locations:
http://repo1.maven.org/maven2/org/jooq/jooq-codegen-gradle/maven-metadata.xml
http://repo1.maven.org/maven2/org/jooq/jooq-codegen-gradle/
Error:(12, 8) java: org.jooq.generated.tables.records.PersonsRecord is not abstract and does not override abstract method values(java.lang.Integer,java.lang.String,java.lang.String) in org.jooq.Record3
Could not find any version that matches org.jooq:jooq-codegen-gradle:latest.integration.
Searched in the following locations:
http://repo1.maven.org/maven2/org/jooq/jooq-codegen-gradle/maven-metadata.xml
http://repo1.maven.org/maven2/org/jooq/jooq-codegen-gradle/
Error:(12, 8) java: org.jooq.generated.tables.records.PersonsRecord is not abstract and does not override abstract method values(java.lang.Integer,java.lang.String,java.lang.String) in org.jooq.Record3
我做错了什么
这是我的毕业设计
apply plugin: 'java'
apply plugin: 'jooq'
sourceCompatibility = 1.5
version = '1.0'
repositories {
jcenter()
}
dependencies {
compile 'org.jooq:jooq:3.4.2'
compile 'org.jooq:jooq-meta:3.4.2'
compile 'org.jooq:jooq-codegen:3.4.2'
testCompile group: 'junit', name: 'junit', version: '4.11'
}
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.github.ben-manes:gradle-jooq-plugin:+'
classpath 'mysql:mysql-connector-java:+'
}
}
jooq {
jdbc {
url 'jdbc:mysql://localhost:3306'
driver 'com.mysql.jdbc.Driver'
user 'admin'
passwoed 'xxx'
}
generator {
database {
name 'org.jooq.util.mysql.MySQLDatabase'
inputSchema 'test_db'
includes '.*'
}
}
}
执行数据提取的App.class:
import static org.jooq.generated.Tables.PERSONS;
public class App {
public static void main(String[] args) {
try(Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/test_db","admin","xxx")){
DSLContext create = DSL.using(c, SQLDialect.MYSQL);
for(PersonsRecord personsRecord : create.selectFrom(PERSONS).fetch()) {
System.out.println(personsRecord
);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
编辑:
apply plugin: 'nu.studer.jooq'
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'nu.studer:gradle-jooq-plugin:1.0.5'
classpath 'mysql:mysql-connector-java:+'
}
}
repositories {
jcenter()
}
dependencies {
compile 'org.jooq:jooq:+'
compile 'mysql:mysql-connector-java:+'
testCompile group: 'junit', name: 'junit', version: '4.11'
}
jooq {
sample(sourceSets.main) {
jdbc {
driver = 'com.mysql.jdbc.Driver'
url = 'jdbc:mysql://localhost:3306/test_db'
user = 'admin'
password = 'qwerty123'
schema = 'test_db'
}
generator {
name = 'org.jooq.util.DefaultGenerator'
strategy {
name = 'org.jooq.util.DefaultGeneratorStrategy'
}
database {
name = 'org.jooq.util.mysql.MySQLDatabase'
inputSchema = 'test_db'
}
generate {
daos = true
}
target {
packageName = 'org.homemade.warehouse.db'
directory = 'src/main/java'
}
}
}
}
更新的build.gradle文件用于:
工作渐变脚本:
apply plugin: 'nu.studer.jooq'
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'nu.studer:gradle-jooq-plugin:1.0.5'
classpath 'mysql:mysql-connector-java:+'
}
}
repositories {
jcenter()
}
dependencies {
compile 'org.jooq:jooq:+'
compile 'mysql:mysql-connector-java:+'
testCompile group: 'junit', name: 'junit', version: '4.11'
}
jooq {
sample(sourceSets.main) {
jdbc {
driver = 'com.mysql.jdbc.Driver'
url = 'jdbc:mysql://localhost:3306/test_db'
user = 'admin'
password = 'qwerty123'
schema = 'test_db'
}
generator {
name = 'org.jooq.util.DefaultGenerator'
strategy {
name = 'org.jooq.util.DefaultGeneratorStrategy'
}
database {
name = 'org.jooq.util.mysql.MySQLDatabase'
inputSchema = 'test_db'
}
generate {
daos = true
}
target {
packageName = 'org.homemade.warehouse.db'
directory = 'src/main/java'
}
}
}
}
感谢Lukas Eder和Etienne Studer,插件现在真的可以工作了 您看到的错误消息: 错误:(12,8)java:org.jooq.generated.tables.records.PersonsRecord不是抽象的,并且不重写org.jooq.Record3中的抽象方法值(java.lang.Integer、java.lang.String、java.lang.String) 这实际上是由于将
@Override
注释放在从接口而不是从抽象类实现的方法上。@Override
注释的这种用法仅在Java6之后才可用。你可能应该改用
sourceCompatibility = 1.6
您还可以找到另一个jOOQ/Gradle插件,该插件可能更易于使用且更为最新:
//配置Java插件和依赖项
// ----------------------------------------------
应用插件:“java”
存储库{
mavenLocal()
mavenCentral()
}
依赖关系{
编译“org.jooq:jooq:3.5.0-SNAPSHOT”
运行时'com.h2数据库:h2:1.4.177'
testCompile'junit:junit:4.11'
}
构建脚本{
存储库{
mavenLocal()
mavenCentral()
}
依赖关系{
类路径“org.jooq:jooq代码根:3.5.0-SNAPSHOT”
类路径'com.h2数据库:h2:1.4.177'
}
}
任务生成在为gradle插件'nu.studer.jooq'提供的build.gradle文件中,必须使用等号来分配配置值:
而不是:
jdbc {
url 'jdbc:mysql://localhost:3306'
....
}
应该是:
jdbc {
url = 'jdbc:mysql://localhost:3306'
....
}
如果使用最新版本的插件(1.0.5),则必须为配置命名(因为您可以定义多个配置),并定义将生成的源添加到哪个源集中:
jooq {
sample(sourceSets.main) {
jdbc {
...
}
}
}
另见
如果您想强制该插件使用特定版本的jOOQ,可以这样做:
buildscript {
...
configurations.classpath {
resolutionStrategy {
forcedModules = [
'org.jooq:jooq:3.4.1',
'org.jooq:jooq-meta:3.4.1',
'org.jooq:jooq-codegen:3.4.1'
]
}
}
}
另请参见能否在GitHub上准备一个最简单的工作示例?将SourceCompability版本设置为1.6或更高版本对ben manes插件没有帮助。我正在尝试使用你的替代方法,我已经尝试了几天,但仍然有我所要求的插件配置问题(我已经更新了这个替代插件的build.gradle文件)。你能给我一些提示为什么gradle不理解jdbc(mysql服务器启动了,库由gradle下载并添加到项目中)?嗯,很遗憾,我不知道。但我们目前正在使用jOOQ的独立代码生成器编写一个小的Gradle教程。这将消除对第三方插件的需求,并且可以得到数据极客的完全支持。我会更新我的答案一点…再次感谢,它帮助了我。现在我可以用latsj jooq版本生成我想要的任何东西。一句简短的评论-没有这样的代码版本“xmlns”:“。最新版本是3.4。我只有一个问题,因为我看到每次运行这个脚本时都会执行代码生成。它可以是干净的任务,也可以是其他任何任务,我怎样才能单独执行代码生成?否则它看起来有点奇怪而且不干净-build.gradle脚本中的某种代码。我怎样才能使我的脚本更漂亮、更干净?@user1376885:我想,只要把这一部分放在一个任务中就行了。。。?对不起,我自己也不是一个格拉德尔专家,所以我选择了一条阻力最小的道路。也许有经验的人能给你一个更好的答案…谢谢,这真的很有效。我的问题是在错误的配置中,漫不经心=)@user1376885:这表明,有时,人们应该坐下来研究实际问题,而不是选择阻力最小的路径(如我的答案所示);-)