2013-05-28 29 views
0

我正在創建自己的gradle插件。在Gradle插件中運行ant.java

在我MyRunTask延伸DefaultTask

我寫這樣的事情

@TaskAction 
public void run() { 

    ant.java { 
     main = 'org.mylang.runtime.main.Main' 
     classpath = project.configurations.runtime 
     args = [ 
      project.mylang.mainMylangClass 
     ] 
     classpath jar.archivePath 

    } 
} 

運行與jar任務掛鉤,這樣我就可以直接使用的jar運行我的程序時。出於這個原因,我喜歡舔罐子我ant.java

  1. 我想將我的運行TAKS依賴於jar任務,這樣我就可以直接使用的jar我跑
  2. 當我給它說jar未初始化。

回答

0

我推薦使用Gradle的project.javaexec代替Ant的project.ant.java。除了硬編碼project.jar.archivePath,您的任務類別應接受Iterable<File>類型的屬性classpath,該屬性從外部(通過插件或構建腳本)從jar.archivePath配置。如果您的任務類的所有功能都是執行project.javaexec,請考慮使用由插件或構建腳本配置的常規JavaExec任務。

+0

>>「應該接受一個類型爲Iterable 的類路徑,該類路徑從外部使用jar.archivePath配置」會自動發生嗎?不使用jar.archivePath? – Rajmahendra

+0

不,您必須在自定義插件或構建腳本中執行此操作。關鍵是任務類不應該知道構建模型。否則,它們耦合得太緊,不能重複使用。 –

相關問題