如何从命令行创建Java Gradle项目?
它应该如下图所示创建standard maven folder layout。
更新:
0.1。来自http://www.gradle.org/docs/current/userguide/tutorial_java_projects.html 我需要用2行
创建文件build.gradle
apply plugin: 'java' apply plugin: 'eclipse'
0.2。添加到下面的build.gradle
任务,而不是执行gradle create-dirs
task "create-dirs" << { sourceSets*.java.srcDirs*.each { it.mkdirs() } sourceSets*.resources.srcDirs*.each { it.mkdirs() } }
0.3。然后运行gradle eclipse
(或配置的其他IDE插件的相应字符串)
那么有没有办法在一个命令中完成它?
答案 0 :(得分:269)
创建Java项目:创建一个新项目目录,跳转到该项目并执行
gradle init --type java-library
将构建源文件夹和Gradle构建文件(包括包装器)。
答案 1 :(得分:18)
gradle家伙正在尽最大努力解决所有(y)我们的问题;-)。 他们最近(从1.9开始)添加了一个新功能(孵化):“build init”插件。
答案 2 :(得分:12)
不幸的是,你无法在一个命令中执行此操作。有一个开放的issue for the very feature。
目前你必须手工完成。如果您需要经常这样做,您可以创建custom gradle plugin,或者只是准备自己的项目框架并在需要时复制它。
修改强>
上述JIRA问题已于2013年5月1日解决,并已修订为1.7-rc-1。 Build Init Plugin上的文档可用,但它表明此功能仍处于“孵化”生命周期中。
答案 3 :(得分:12)
最后在比较了所有解决方案后,我认为从build.gradle
文件开始可以很方便。
Gradle分发包含samples
个文件夹,其中包含大量示例,并且gradle init --type basic
个命令请参阅Chapter 47. Build Init Plugin。但他们都需要一些编辑。
您也可以使用下面的template,然后运行gradle initSourceFolders 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"
}
结果如下。
可以在没有Eclipse的任何Gradle插件的情况下使用它,
或使用(Enide) Gradle for Eclipse, Jetty, Android替代Gradle Integration for Eclipse
答案 4 :(得分:1)
如果您正在使用Eclipse,对于现有项目(具有build.gradle
文件),您只需键入gradle eclipse
即可为该项目创建所有Eclipse文件和文件夹。
它会为您处理所有依赖项,并将它们添加到Eclipse中的项目资源路径中。
答案 5 :(得分:1)
我可以使用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。我把这个例子放在GitHub
答案 6 :(得分:0)
这是对我有用的。.我想用gradle创建一个hello world java应用程序,并满足以下要求。
这是解决方法:
gradle init --type java-application
可运行的脂肪罐
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"
}
这是完整的build.gradle
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"
}
Gradle构建命令
创建胖子罐:gradle fatJar
复制依赖项:gradle copyDepends
创建具有依赖项的可运行jar:gradle createJar
更多详细信息,请点击此处:https://jafarmlp.medium.com/a-simple-java-project-with-gradle-2c323ae0e43d
答案 7 :(得分:-1)
我刚试过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,并且是日食的忠实粉丝,但是普通的家伙,这意味着没有一个测试Neon.1用于最简单的用例......导入一个gradle项目。 这还不够好。 我正在转向Intellij进行gradle项目: