如何创建JavaGradle项目
如何从命令行创建JavaGradle项目 它应该创建如下图所示 更新: .1。从…起 我需要用两行代码创建文件如何创建JavaGradle项目,java,gradle,Java,Gradle,如何从命令行创建JavaGradle项目 它应该创建如下图所示 更新: .1。从…起 我需要用两行代码创建文件build.gradle .2。添加到下面的build.gradle任务,然后执行gradle create dirs 任务“创建目录”不幸的是,您不能在一个命令中完成此任务。有一个开放的 现在你必须用手来做。如果您需要经常这样做,您可以创建一个项目框架,或者只准备您自己的项目框架,并在需要时复制它 编辑 上述JIRA问题已于2013年5月1日解决,并在1.7-rc-1中固定。上的文档
build.gradle
.2。添加到下面的build.gradle
任务,然后执行gradle create dirs
任务“创建目录”不幸的是,您不能在一个命令中完成此任务。有一个开放的
现在你必须用手来做。如果您需要经常这样做,您可以创建一个项目框架,或者只准备您自己的项目框架,并在需要时复制它
编辑
上述JIRA问题已于2013年5月1日解决,并在1.7-rc-1中固定。上的文档是可用的,尽管它表明此功能仍处于“孵化”生命周期中。gradle的人正在尽最大努力解决我们的所有问题;-)。
他们最近(从1.9开始)添加了一个新特性(孵化):buildinit插件
请参阅:如果您正在使用Eclipse,对于现有项目(具有build.gradle
文件),您只需键入gradle Eclipse
,即可创建此项目的所有Eclipse文件和文件夹
它为您处理所有依赖项,并将它们添加到Eclipse中的项目资源路径中。最后,在比较了所有解决方案之后,我认为从build.gradle
文件开始可以很方便
Gradle发行版有一个包含大量示例的samples
文件夹,还有gradleinit--type basic
com,请参见。但它们都需要一些编辑
您也可以使用下面的命令,然后运行gradleinitsourcefolders eclipse
/*
* Nodeclipse/Enide build.gradle template for basic Java project
* https://github.com/Nodeclipse/nodeclipse-1/blob/master/org.nodeclipse.enide.editors.gradle/docs/java/basic/build.gradle
* Initially asked on
* http://stackoverflow.com/questions/14017364/how-to-create-java-gradle-project
* Usage
* 1. create folder (or general Eclipse project) and put this file inside
* 2. run `gradle initSourceFolders eclipse` or `gradle initSourceFolders idea`
* @author Paul Verest;
* based on `gradle init --type basic`, that does not create source folders
*/
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
task initSourceFolders { // add << before { to prevent executing during configuration phase
sourceSets*.java.srcDirs*.each { it.mkdirs() }
sourceSets*.resources.srcDirs*.each { it.mkdirs() }
}
task wrapper(type: Wrapper) {
gradleVersion = '1.11'
}
// In this section you declare where to find the dependencies of your project
repositories {
// Use Maven Central for resolving your dependencies.
// You can declare any Maven/Ivy/file repository here.
mavenCentral()
}
// In this section you declare the dependencies for your production and test code
dependencies {
//compile fileTree(dir: 'libs', include: '*.jar')
// The production code uses the SLF4J logging API at compile time
//compile 'org.slf4j:slf4j-api:1.7.5'
// Declare the dependency for your favourite test framework you want to use in your tests.
// TestNG is also supported by the Gradle Test task. Just change the
// testCompile dependency to testCompile 'org.testng:testng:6.8.1' and add
// 'test.useTestNG()' to your build script.
testCompile "junit:junit:4.11"
}
/*
*用于基本Java项目的NodeEclipse/Enide build.gradle模板
* https://github.com/Nodeclipse/nodeclipse-1/blob/master/org.nodeclipse.enide.editors.gradle/docs/java/basic/build.gradle
*最初询问
* http://stackoverflow.com/questions/14017364/how-to-create-java-gradle-project
*用法
* 1. 创建文件夹(或general Eclipse项目)并将此文件放入
* 2. 运行'gradle initSourceFolders eclipse'或'gradle initSourceFolders idea'`
*@作者Paul Verest;
*基于'gradle init--type basic',它不会创建源文件夹
*/
应用插件:“java”
应用插件:“eclipse”
应用插件:“创意”
task initSourceFolders{//add创建Java项目:创建一个新的项目目录,跳转到其中并执行
gradle init --type java-library
将生成源文件夹和Gradle构建文件(包括包装器)。我可以在build.Gradle
中使用groovy方法来处理它,为java、资源和测试创建所有源文件夹。然后我将其设置为在Gradle eclipse
任务之前运行
eclipseClasspath.doFirst {
initSourceFolders()
}
def initSourceFolders() {
sourceSets*.java.srcDirs*.each { it.mkdirs() }
sourceSets*.resources.srcDirs*.each { it.mkdirs() }
}
现在,我们只需一个命令就可以将一个新的gradle Java EE项目设置到eclipse。我将这个示例放在上,我刚刚使用eclipse Neon.1和gradle进行了尝试:
------------------------------------------------------------
Gradle 3.2.1
------------------------------------------------------------
Build time: 2016-11-22 15:19:54 UTC
Revision: 83b485b914fd4f335ad0e66af9d14aad458d2cc5
Groovy: 2.4.7
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 1.8.0_112 (Oracle Corporation 25.112-b15)
OS: Windows 10 10.0 amd64
在Java版本的windows 10上:
C:\FDriveKambiz\repo\gradle-gen-project>java -version
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)
正如你在Eclipse中看到的那样,它失败得很惨。
但在Intellij中像一只翱翔的雄鹰一样航行……我不知道Intellij,而且是eclipse的超级粉丝,但普通的家伙,这意味着没有人测试Neon。1对于最简单的用例……导入gradle项目。
这还不够好。
我正在为gradle项目切换到Intellij:
以下是它对我的作用。我想用gradle创建一个hello world java应用程序,并满足以下要求
应用程序具有外部jar依赖项
创建一个可运行的胖jar,并将所有依赖类复制到该jar
创建一个可运行的jar,将所有依赖库复制到“dependencies”目录,并在清单中添加类路径
以下是解决方案:
- 安装最新的gradle(检查gradle--版本。我使用的是gradle 6.6.1)
- 创建文件夹并打开终端
- 执行
gradleinit——键入java应用程序
- 在命令行中添加所需的数据
- 将项目导入IDE(IntelliJ或Eclipse)
- 使用以下任务编辑build.gradle文件。
可运行的脂肪罐
task fatJar(type: Jar) {
clean
println("Creating fat jar")
manifest {
attributes 'Main-Class': 'com.abc.gradle.hello.App'
}
archiveName "${runnableJar}"
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
} with jar
println("Fat jar is created")
}
复制依赖项
task copyDepends(type: Copy) {
from configurations.default
into "${dependsDir}"
}
在清单中创建与类路径相关的jar
task createJar(type: Jar) {
println("Cleaning...")
clean
manifest {
attributes('Main-Class': 'com.abc.gradle.hello.App',
'Class-Path': configurations.default.collect { 'dependencies/' +
it.getName() }.join(' ')
)
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
} with jar
println "${outputJar} created"
}
这是完整的构建
plugins {
id 'java'
id 'application'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.slf4j:slf4j-api:1.7.30'
implementation 'ch.qos.logback:logback-classic:1.2.3'
implementation 'ch.qos.logback:logback-core:1.2.3'
testImplementation 'junit:junit:4.13'
}
def outputJar = "${buildDir}/libs/${rootProject.name}.jar"
def dependsDir = "${buildDir}/libs/dependencies/"
def runnableJar = "${rootProject.name}_fat.jar";
//Create runnable fat jar
task fatJar(type: Jar) {
clean
println("Creating fat jar")
manifest {
attributes 'Main-Class': 'com.abc.gradle.hello.App'
}
archiveName "${runnableJar}"
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
} with jar
println("Fat jar is created")
}
//Copy dependent libraries to directory.
task copyDepends(type: Copy) {
from configurations.default
into "${dependsDir}"
}
//Create runnable jar with dependencies
task createJar(type: Jar) {
println("Cleaning...")
clean
manifest {
attributes('Main-Class': 'com.abc.gradle.hello.App',
'Class-Path': configurations.default.collect { 'dependencies/' +
it.getName() }.join(' ')
)
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
} with jar
println "${outputJar} created"
}
渐变生成命令
创建fat jar:gradle fatJar
复制依赖项:渐变复制依赖项
创建具有依赖项的可运行jar:gradle createJar
此处可以阅读更多详细信息:这不会创建源文件夹。如果以前没有创建源文件夹,Eclipse配置将不会满。不过,非常感谢您,作为步骤3添加。正如其他答案中提到的,有关build init插件的文档可以在此处找到:非常好。@Mike在Eclipse中,在执行此操作之前,java project必须转换为gradle项目。那么,我如何自动设置源文件夹?一个重要的问题。你必须有包含init插件的gradle版本。我花了很多时间来找出我的gradle有什么问题。使用mkdir-p src/{main,test}/{java,resources}
gradle wrapper--gradle version 4.1 init--type java library
如果你想指定wrapper版本,你知道IntelliJ java项目框架的等价物吗?我想答案显然在上面…\u或其他IDE插件配置的对应字符串。\u:=)问题是:如何从逗号创建java gradle项目nd行?在这个上下文中有帮助有什么问题?Paul?它在同一个上下文中。那么,为什么不说明eclipse当前在导入它时有问题呢。
task createJar(type: Jar) {
println("Cleaning...")
clean
manifest {
attributes('Main-Class': 'com.abc.gradle.hello.App',
'Class-Path': configurations.default.collect { 'dependencies/' +
it.getName() }.join(' ')
)
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
} with jar
println "${outputJar} created"
}
plugins {
id 'java'
id 'application'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.slf4j:slf4j-api:1.7.30'
implementation 'ch.qos.logback:logback-classic:1.2.3'
implementation 'ch.qos.logback:logback-core:1.2.3'
testImplementation 'junit:junit:4.13'
}
def outputJar = "${buildDir}/libs/${rootProject.name}.jar"
def dependsDir = "${buildDir}/libs/dependencies/"
def runnableJar = "${rootProject.name}_fat.jar";
//Create runnable fat jar
task fatJar(type: Jar) {
clean
println("Creating fat jar")
manifest {
attributes 'Main-Class': 'com.abc.gradle.hello.App'
}
archiveName "${runnableJar}"
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
} with jar
println("Fat jar is created")
}
//Copy dependent libraries to directory.
task copyDepends(type: Copy) {
from configurations.default
into "${dependsDir}"
}
//Create runnable jar with dependencies
task createJar(type: Jar) {
println("Cleaning...")
clean
manifest {
attributes('Main-Class': 'com.abc.gradle.hello.App',
'Class-Path': configurations.default.collect { 'dependencies/' +
it.getName() }.join(' ')
)
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
} with jar
println "${outputJar} created"
}