gpt4 book ai didi

java - 无法使用Gradle输出jar文件

转载 作者:行者123 更新时间:2023-12-03 06:03:04 25 4
gpt4 key购买 nike

我有一个项目,其中有多个主类文件,
我可以在IDE(intelij)中编译并运行项目,但是无法弄清楚如何使用gradle输出 Artifact jar
这是我尝试过的:

buildscript {
repositories {
jcenter()
maven {
url 'https://plugins.gradle.org/m2/'
}
}
dependencies {
// Add this line
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.0.1"
classpath 'gradle.plugin.edu.sc.seis.gradle:launch4j:1.6.2'
}
}


group 'polisotinserter'
version '1.0.0'

// Apply the java plugin to add support for Java
apply plugin: 'java'
apply plugin: 'com.jfrog.artifactory'
apply plugin: 'maven-publish'
apply plugin: 'idea'
apply plugin: 'edu.sc.seis.launch4j'
sourceCompatibility = 1.8

repositories {
jcenter()
maven {
url 'https://artifactory.lyoko.pw:443/libs-release-local'
}
}

dependencies {
compile group: 'com.github.axet', name: 'lookup', version: '0.1.30'
compile group: 'org.seleniumhq.selenium', name: 'selenium-support', version: '3.0.1'
compile group: 'org.seleniumhq.selenium', name: 'selenium-ie-driver', version: '3.0.1'
compile "org.jsoup:jsoup:1.8.3"
compile group: 'javax.mail', name: 'mail', version: '1.4.7'

compile(group: 'EnglishToHebrewTranslicirator', name: 'EnglishToHebrewTranslicirator', version: 'EnglishToHebrewTranslicirator')
compile group: 'net.sourceforge.jexcelapi', name: 'jxl', version: '2.6.12'
compile group: 'org.json', name: 'json', version: '20160810'


compile(group: 'AbstractConnectionApi', name: 'AbstractConnectionApi', version: '1.0.0')
compile(group: 'sjxlsx-custom', name: 'sjxlsx-custom', version: '1.0.0')
compile(group: 'programupdater', name: 'Programs-Updater', version: '1.0.0')
compile(group: 'com.intellij', name: 'forms_rt', version: '7.0.3+')

}

subprojects {
apply plugin: 'java'
repositories {
jcenter()
maven {
url 'https://artifactory.lyoko.pw:443/libs-release-local'
credentials {
username = "vasilevich"
password = "APkgGZjFzEM6Kp1yj1Be3fyrKW"
}
}
}
sourceSets {
main {
java {
srcDir 'src/'
}
}
}
dependencies {
compile(group: 'programupdater', name: 'Programs-Updater', version: '1.0.0')
compile(group: 'com.intellij', name: 'forms_rt', version: '7.0.3+')
}
}


project(':CGFetcher') {
dependencies {
compile "org.jsoup:jsoup:1.8.3"
compile group: 'net.sourceforge.jexcelapi', name: 'jxl', version: '2.6.12'
}
task assembleRelease(type: Jar) {
classifier = 'release'
manifest {
attributes 'Implementation-Title': "CGFetcher",
'Implementation-Version': project.version,
'Main-Class': 'gui.CGGuiMain'
}
baseName = "CGFetcher"
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}
artifacts {
archives assembleRelease
}
}

在我使用
gradle build

我在build / libs文件夹中得到一个jar,该文件夹称为polisotinserter-1.0.0.jar
这是无法预料的,​​而且jar不包含我在project()指令中设置的 list 。

经过几次测试后,似乎project()指令根本没有运行,所以我很困惑从哪里去?我怎样才能让gradle运行
project(':CGFetcher') {

指示?
感谢您的关注。

最佳答案

好的,问题是,它不应该出现在项目的根目录中,我注意到当我运行gradle build时,它还会创建一个子文件夹CGFetcher
这反过来又有自己的build文件夹和相关的jar。
此外,我注意到它没有使用根项目的源,所以我必须这样做:

buildscript {
repositories {
jcenter()
maven {
url 'https://plugins.gradle.org/m2/'
}
}
dependencies {
// Add this line
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.0.1"
classpath 'gradle.plugin.edu.sc.seis.gradle:launch4j:1.6.2'
}
}


group 'polisotinserter'
version '1.0.0'

// Apply the java plugin to add support for Java
apply plugin: 'java'
apply plugin: 'com.jfrog.artifactory'
apply plugin: 'maven-publish'
apply plugin: 'idea'
apply plugin: 'edu.sc.seis.launch4j'
sourceCompatibility = 1.8

repositories {
jcenter()
maven {
url 'https://artifactory.lyoko.pw:443/libs-release-local'
}
}

dependencies {
compile group: 'com.github.axet', name: 'lookup', version: '0.1.30'
compile group: 'org.seleniumhq.selenium', name: 'selenium-support', version: '3.0.1'
compile group: 'org.seleniumhq.selenium', name: 'selenium-ie-driver', version: '3.0.1'
compile "org.jsoup:jsoup:1.8.3"
compile group: 'javax.mail', name: 'mail', version: '1.4.7'

compile(group: 'EnglishToHebrewTranslicirator', name: 'EnglishToHebrewTranslicirator', version: 'EnglishToHebrewTranslicirator')
compile group: 'net.sourceforge.jexcelapi', name: 'jxl', version: '2.6.12'
compile group: 'org.json', name: 'json', version: '20160810'


compile(group: 'AbstractConnectionApi', name: 'AbstractConnectionApi', version: '1.0.0')
compile(group: 'sjxlsx-custom', name: 'sjxlsx-custom', version: '1.0.0')
compile(group: 'programupdater', name: 'Programs-Updater', version: '1.0.0')
compile(group: 'com.intellij', name: 'forms_rt', version: '7.0.3+')

}
sourceSets {
main {
java {
srcDir new File(rootProject.projectDir, "src/main/java").getAbsolutePath()
}
resources {
srcDir new File(rootProject.projectDir, "src/main/resources").getAbsolutePath()
}
}
}

subprojects {
apply plugin: 'java'
repositories {
jcenter()
maven {
url 'https://artifactory.lyoko.pw:443/libs-release-local'
credentials {
username = "vasilevich"
password = "APkgGZjFzEM6Kp1yj1Be3fyrKW"
}
}
}

sourceSets {
main {
java {
srcDir new File(rootProject.projectDir, "src/main/java").getAbsolutePath()
}
resources {
srcDir new File(rootProject.projectDir, "src/main/resources").getAbsolutePath()
}
}
}
dependencies {
compile group: 'com.github.axet', name: 'lookup', version: '0.1.30'

compile "org.jsoup:jsoup:1.8.3"
compile group: 'javax.mail', name: 'mail', version: '1.4.7'

compile(group: 'EnglishToHebrewTranslicirator', name: 'EnglishToHebrewTranslicirator', version: 'EnglishToHebrewTranslicirator')
compile group: 'net.sourceforge.jexcelapi', name: 'jxl', version: '2.6.12'
compile group: 'org.json', name: 'json', version: '20160810'


compile(group: 'AbstractConnectionApi', name: 'AbstractConnectionApi', version: '1.0.0')
compile(group: 'sjxlsx-custom', name: 'sjxlsx-custom', version: '1.0.0')
compile(group: 'programupdater', name: 'Programs-Updater', version: '1.0.0')
compile(group: 'com.intellij', name: 'forms_rt', version: '7.0.3+')


}
}

project(':CGFetcher') {

task assembleRelease(type: Jar) {
classifier = 'release'
manifest {
attributes 'Implementation-Title': "CGFetcher",
'Implementation-Version': project.version,
'Main-Class': 'gui.CGGuiMain'
}
baseName = "CGFetcher"
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}
artifacts {
archives assembleRelease
}
}

注意:
sourceSets {
main {
java {
srcDir new File(rootProject.projectDir, "src/main/java").getAbsolutePath()
}
resources {
srcDir new File(rootProject.projectDir, "src/main/resources").getAbsolutePath()
}
}
}

这告诉项目使用根源代码。
但是现在出现了一个新问题,
我不知道如何为每个项目创建不同的依赖关系,似乎gradle迫使我使用所有依赖关系,即使它们没有在代码中被精确地使用,也仅仅是因为包含了类。
编辑:
好吧,我也想过
简单来说,为您的所有子项目提供compileOnly(在较早的gradle版本中提供)
并在实际项目中添加“编译”,这是一个示例:
subprojects {
apply plugin: 'java'
repositories {
jcenter()
maven {
url 'https://artifactory.lyoko.pw:443/libs-release-local'
credentials {
username = "vasilevich"
password = "APkgGZjFzEM6Kp1yj1Be3fyrKW"
}
}
}

sourceSets {
main {
java {
srcDir new File(rootProject.projectDir, "src/main/java").getAbsolutePath()
}
resources {
srcDir new File(rootProject.projectDir, "src/main/resources").getAbsolutePath()
}
}
}
dependencies {
compileOnly group: 'com.github.axet', name: 'lookup', version: '0.1.30'
compileOnly group: 'org.seleniumhq.selenium', name: 'selenium-support', version: '3.0.1'
compileOnly group: 'org.seleniumhq.selenium', name: 'selenium-ie-driver', version: '3.0.1'
compileOnly group: 'javax.mail', name: 'mail', version: '1.4.7'
compileOnly(group: 'EnglishToHebrewTranslicirator', name: 'EnglishToHebrewTranslicirator', version: 'EnglishToHebrewTranslicirator')
compileOnly group: 'org.json', name: 'json', version: '20160810'
compileOnly(group: 'AbstractConnectionApi', name: 'AbstractConnectionApi', version: '1.0.0')
compileOnly(group: 'sjxlsx-custom', name: 'sjxlsx-custom', version: '1.0.0')
compileOnly "org.jsoup:jsoup:1.8.3"
compileOnly(group: 'programupdater', name: 'Programs-Updater', version: '1.0.0')
compileOnly(group: 'com.intellij', name: 'forms_rt', version: '7.0.3+')
compileOnly group: 'net.sourceforge.jexcelapi', name: 'jxl', version: '2.6.12'

}
}

project(':CGFetcher') {
dependencies {
compile "org.jsoup:jsoup:1.8.3"
compile(group: 'programupdater', name: 'Programs-Updater', version: '1.0.0')
compile(group: 'com.intellij', name: 'forms_rt', version: '7.0.3+')
compile group: 'net.sourceforge.jexcelapi', name: 'jxl', version: '2.6.12'

}
task assembleRelease(type: Jar) {
classifier = 'release'
manifest {
attributes 'Implementation-Title': "CGFetcher",
'Implementation-Version': project.version,
'Main-Class': 'gui.CGGuiMain'
}
baseName = "CGFetcher"
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}
artifacts {
archives assembleRelease
}
}

这不会导致任何错误,并且最终的jar值应为预期值。

关于java - 无法使用Gradle输出jar文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40335701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com