在可执行Jar文件生成期间更改类内的数据

时间:2016-09-02 09:53:34

标签: gradle

美好的一天,团队。 我有简单的gradle项目与java" HelloWorld"上课到PoC。

public class HelloWorld {
public static void main (String[] args){
    String hello = "Hello, world";
    System.out.print(hello);
}}

我为这个类生成了可运行的Jar文件。 现在我想做下一步:在gradle中生成Jar文件时,我需要将" Hello,world" 更改为" Hello Hello world" 。我知道这是可能的,但我无法在网上找到这些信息。 提前致谢。 目前的gradle代码如下:

apply plugin: 'java'
apply plugin: 'application'

sourceCompatibility = 1.5

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

task createJar(type: Jar){
    mainClassName = 'HelloWorld'
    manifest {attributes 'Implementation-Title': 'Gradle Jar File Example','Main-Class': mainClassName}
    baseName = 'HelloWorldJar'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}

1 个答案:

答案 0 :(得分:0)

嗯,我自己做了。可能不是最聪明的解决方案,但仍在工作:)并且感谢谁试图帮助我。

更新以下代码

task copyJavaClass(type: Copy) {
    from 'src/main/java'
    into 'src/main/java'
    include 'HelloWorld.java'
    filter { line -> !line.contains('String hello = "Hello, world";') ? line : 'String hello = "Hello another world";' }
    filter { line -> !line.contains('public class HelloWorld {') ? line : 'public class HelloAnotherWorld {' }
    rename { filename ->filename.replace 'HelloWorld', 'HelloAnotherWorld'
    }
}

task createJar(type: Jar){
    mainClassName = 'HelloAnotherWorld'
    manifest {attributes 'Implementation-Title': 'Gradle Jar File Example','Main-Class': mainClassName}
    baseName = 'HelloAnotherWorldJar'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}

第一个任务用类名改变整行,用String换行,第二个为新类创建可运行的Jar文件。 仅在终端中运行gradlew copyJavaClass createJar任务。