web-dev-qa-db-ja.com

GradleでデフォルトのJVM引数を追加するにはどうすればよいですか

Gradleでビルドするときに、jarにデフォルトのJVMオプションを追加する必要があります。ドキュメンテーションから、私は設定する必要があることを得ました:

applicationDefaultJvmArgs = ["-Djavafx.embed.singleThread=true"]

私はGradleについてあまり経験がなく、build.gradleファイルを作成した開発者は、ほとんどのWebサイトが例として提供しているものとは異なります。

Build.gradleは次のとおりです。

apply plugin: 'Java'
apply plugin: 'Eclipse'

version = '0.1'

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.+'
    compile 'placeholder'
}

task release(type: Jar) {
    manifest {
        attributes("Implementation-Title": "placeholder",
                "Implementation-Version": version,
                'Main-Class': 'placeholder.Application')
    }
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }

    with jar
}

task wrapper(type: Wrapper) {
    gradleVersion = '2.2.1'
}

引数をどこに置くべきかわかりません。私はそれらを異なる場所に置いてみましたが、私はいつも得ます:

A problem occurred evaluating root project 'placeholder'.
> No such property: applicationDefaultJvmArgs for class: org.gradle.api.tasks.bundling.Jar_Decorated

ジョニー、どうもありがとう

14
Jhonny007

私の頭の上から私は2つのオプションを考えることができます:

オプション1:@Ethanが言ったことをやれば、うまくいくでしょう:

package placeholder;

//your imports

public class Application{
  static {
      System.getProperties().set("javafx.embed.singleThread", "true");  
  }
  // your code
  public static void main(String... args){
    //your code
  }
}

オプション2:アプリケーションプラグインを使用+デフォルトのjvm値

build.gradle:

apply plugin: 'application'
//your code
applicationDefaultJvmArgs = ["-Djavafx.embed.singleThread=true"]

これで、2つの方法でコードを実行できます。

グラドルから

$gradle run

配布元(スクリプト)から。アプリケーションプラグインが提供する生成されたスクリプトから:

$gradle clean build distZip

その後、gradleは${your.projectdir}/buildの下のどこかにZipファイルを生成します。 Zipを見つけて解凍し、/binの下に${yourproject}.batおよび${yourproject}実行可能ファイルがあります。 1つはLinux/mac/unix用(${yourproject})、もう1つはWindows用(${yourproject.bat}

オプション3(Android開発者):gradle.propertiesを使用してjvm引数を設定します

# Project-wide Gradle settings.

# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx1024m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx1024m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 

# You can setup or customize it according to your needs and combined with the above default value.
org.gradle.jvmargs=-Djavafx.embed.singleThread=true

docs.gradle.org でgradleビルド環境を使用する方法の詳細について

22
portenez

applicationDefaultJvmArgsは、 Application プラグインによって提供されます。そのため、そのプラグインを適用すると、エラーはおそらくなくなり、mainClassNameプロパティを完全修飾クラス名に設定すると、gradle runを発行してプログラムを実行できるようになります。呼び出す。

1
KKishore

gradleタスクでコマンドラインを使用できます:

class AppRun extends JavaExec {
    private boolean withDebug

    @Option(option = "with-debug", description = "enable debug for the process. ")
    public void setDebugMode(boolean debug) {
        this.withDebug = debug
    }

    public boolean getDebugMode() {
        return this.withDebug
    }
}

task run(type: AppRun) {
}

次に、オプションを指定してタスクを実行します

gradle run --with-debug

1
jiahut