2017-04-19 44 views
1

使用gradle 3.4,但它相當新。installDist上的Gradle複製文件夾

如果我運行gradlew installDist,src/main/java中的文件被複制到build文件夾中,所有工作正常。

但我也有在的src/main/conf目錄額外的文件夾,我想拷貝過來構建/安裝/我的神器/ conf目錄

我不想把它的src/main /資源,因爲它會包含在jar中。我想保持它外部。

我的gradle文件沒有任何特別的東西,除了依賴。

那麼當installDist運行時我該如何去複製文件夾/文件呢?

編輯:

必須與陰影插件一起工作。

回答

1

要管理distribution contents,你將需要修改main分佈如下所示:

apply plugin: 'distribution' 

distributions { 
    main { 
     baseName = 'my-artifact' 
     contents { 
      from { 'src/main/java' } 
      from('src/main') { 
       include 'conf/**' 
      } 
     } 
    } 
} 

這將:

  • 副本src/main/java
  • 下的文件複製目錄conf和它下面的文件

新的結構是這樣的:

build/install/my-artifact/ 
        │ 
        ├── com/ 
        │ └── yourlib 
        │  └── ...... 
        └── conf/ 
         └── ..... 

你也可以包括在同級別的源目錄:

build/install/my-artifact/ 
        │ 
        ├── java/ 
        │ └── com/ 
        │   └── yourlib 
        │    └── ......  
        └── conf/ 
         └── ..... 

下列要求:

apply plugin: 'distribution' 

distributions { 
    main { 
     baseName = 'my-artifact' 
     contents { 
      from('src/main') { 
       include 'java/**' 
       include 'conf/**' 
      } 
     } 
    } 
} 

檢查CopySpec接口更多信息

+0

好吧,似乎工作。我不確定它是否相同,但可以使用影子版本installShadowApp和distShadowZip(更新後的問題)完成此操作嗎? – user432024

+0

您是否嘗試過[解決方法](https://github.com/johnrengelman/shadow/issues/150)? –

+0

是的,這是有效的。 installShadowApp { 分佈{ 內容{ 從( '的src/main'){ 包括 'CONF/**' } 從( ''){ 包括 '根目錄/ **' } } } } – user432024