The Grunt Plugin for running java, javac, jar, signjar and other java related commands from within Grunt
This plugin requires Grunt ~0.4.4
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-run-java --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-run-java');
In your project's Gruntfile, add a section named run_java
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
run_java: {
options: {
// Task-specific options go here.
},
your_target: {
// Target-specific details go here.
execOptions:{
cwd: "/your/current/working/directory/"
},
command: "", //java ,javac, jarsigner, jar
jarName: "", //used for java, jar and jarsigner
className: "", //used for java
javaArgs : "", //used for java
sourceFiles: [""],//used for javac
javaOptions: { //used for java and javac
"classpath": [""],
...
},
manifestName: "", //used for jar
dir: "", //used for jar
files: "", //used for jar
jarOptions : { //used for jar and jarsigner
"keystore": "",
},
alias: "" //used for jarsigner
},
},
});
Type: boolean
Default: true
Show stdout in the Terminal.
Type: boolean
Default: true
Show stderr in the Terminal.
Type: boolean
Default: true
Forward the terminal's stdin to the command.
Type: boolean
Default: true
Fail task if it encounters an error.
Type: object
Specify some options to be passed to the .exec() method:
cwd
String Current working directory of the child processenv
Object Environment key-value pairssetsid
Booleanencoding
String (Default: 'utf8')timeout
Number (Default: 0)maxBuffer
Number (Default: 200*1024)killSignal
String (Default: 'SIGTERM')
Run a java command
grunt.initConfig({
run_java: {
options: { //Default is true
stdout: false,
stderr: false,
stdin: false,
failOnError: false
},
java_command: {
execOptions:{
cwd: "/path/where/java/command/is/run/"
},
command: "java",
jarName: "your jarfile name",
className: "your class name",
javaOptions: { //java Options
"classpath": ["1.jar", "2.jar"]
},
javaArgs : "your argument"
}
}
});
Run a javac command
grunt.initConfig({
run_java: {
options: { //Default is true
stdout: false,
stderr: false,
stdin: false,
failOnError: false
},
javac_task: {
execOptions:{
cwd: "/path/where/javac/command/is/run/"
},
command: "javac",
javaOptions: { //javac Options
"classpath": ["1.jar", "2.jar"]
"d": "example/bin"
},
sourceFiles: ["java/file/location/*.java", "java/file/another/location/*.java"]
}
}
});
Run a jar command
grunt.initConfig({
run_java: {
options: { //Default is true
stdout: false,
stderr: false,
stdin: false,
failOnError: false
},
jar_task: {
execOptions:{
cwd: "/path/where/jar/command/is/run/"
},
command: "jar",
jarName: "my.jar",
jarOptions : "cfm", //{ctxui}[vfm0Me]
manifestName: "MANIFEST",
dir: "bin/",
files: "."
}
}
});
Run a jarsigner command
grunt.initConfig({
run_java: {
options: { //Default is true
stdout: false,
stderr: false,
stdin: false,
failOnError: false
},
sign_task: {
execOptions:{
cwd: "/path/where/jarsinger/command/is/run/"
},
command: "jarsigner",
jarName: "my.jar",
jarOptions : { //jarsigner options
"keystore": "keystore",
"signedjar": "mySigned.jar"
},
alias: "signFiles"
}
}
});
Run a javadoc command
grunt.initConfig({
run_java: {
options: { //Default is true
stdout: false,
stderr: false,
stdin: false,
failOnError: false
},
javadov_task: {
execOptions:{
cwd: "/path/where/javac/command/is/run/"
},
command: "javadoc",
javadocOptions: { //javadoc Options
"d": "example/javadoc"
},
sourceFiles: ["java/file/location/*.java", "java/file/another/location/*.java"]
}
}
});
You can also supply a function that returns the command:
grunt.initConfig({
run_java: {
hello: {
command: function () {
return 'jar -cf myapplet.jar -C bin/ .';
}
}
}
});
Which can also take arguments:
run_java: {
hello: {
command: function (options) {
return 'jar ' + options;
}
}
}
grunt.loadNpmTasks('grunt-run-java');
grunt.registerTask('default', ['run-java:hello']);
Run multiple commands by placing them in an array which is joined using &&
or ;
. &&
means run this only if the previous command succeeded. You can also use &
to have the commands run concurrently (by executing all commands except the last one in a subshell).
grunt.initConfig({
shell: {
multiple: {
command: [
'mkdir bin',
'jar -cf myapplet.jar -C bin/ .',
].join('&&')
}
}
});
Initial Version
MIT © [Kannan Loganathan] kannan.loganathan@gmail.com