2016-06-22 17 views
8

Bağımlılık bilgisini benim manifest dosyasına yerleştirmek istiyorum, böylece bu bilgileri çalışma zamanında açıklayabileceğim. Örneğin, bir kütüphanenin hangi sürümünün hizmetimin belirli bir çalışan örneği tarafından kullanıldığını görebilirim., bağımlılık bilgisini manifestoya gömmek için notu kullan

benim 'fatjar' inşa etmek gradle kullanıyorum:

shadowJar { 
    mergeServiceFiles() 
    archiveName "service.jar" 
    exclude "META-INF/*.SF" 
    exclude "META-INF/*.DSA" 
    exclude "META-INF/*.RSA" 
    manifest { 
    attributes('Main-Class': "service.Service", 
       'Built-By': System.getProperty('user.name'), 
       'Built-Date': new Date(), 
       'Built-JDK': System.getProperty('java.version'), 
       'Implementation-Version': version, 
       'Implementation-Title': project.name) 
    } 
} 

Ve diğer çeşitli kütüphanelere üzerinde bağımlılıkları vardır: Ben apaçık dosyasına bağımlılık bilgi ekleyebilir nasıl

dependencies { 
    compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.39' 
    ... 
} 

? Örneğin:

Çalışma aşağıdaki gibi yapılabilir
Manifest-Version: 1.0 
Implementation-Title: service 
Implementation-Version: Local Build 
Built-By: me 
Built-Date: Wed Jun 22 14:13:53 BST 2016 
Built-JDK: 1.8.0_91 
Main-Class: service.Service 
Dependency-mysql-connector-java: mysql:mysql-connector-java:5.1.39 

cevap

4

: attributes yana

Manifest-Version: 1.0 
Main-Class: service.Service 
Built-By: opal 
Built-Date: Mon Jul 04 17:27:05 CEST 2016 
Built-JDK: 1.8.0_91 
Implementation-Version: version 
Implementation-Title: 37969253 
dependency-com-google-guava: com.google.guava:guava:19.0 
dependency-com-google-inject: com.google.inject:guice:4.1.0 

bağımsız değişken olarak Map alır sizi:

buildscript { 
    repositories { 
    maven { 
     url 'https://plugins.gradle.org/m2/' 
    } 
    } 

    dependencies { 
    classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.3' 
    } 
} 

apply plugin: 'java' 
apply plugin: 'com.github.johnrengelman.shadow' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'com.google.guava:guava:19.0' 
    compile 'com.google.inject:guice:4.1.0' 
} 

shadowJar { 
    mergeServiceFiles() 
    archiveName "service.jar" 
    exclude "META-INF/*.SF" 
    exclude "META-INF/*.DSA" 
    exclude "META-INF/*.RSA" 
    manifest { 
    attributes(
       [ 
       'Main-Class': "service.Service", 
       'Built-By': System.getProperty('user.name'), 
       'Built-Date': new Date(), 
       'Built-JDK': System.getProperty('java.version'), 
       'Implementation-Version': 'version', 
       'Implementation-Title': project.name, 
       ] + 
       project.configurations.compile.allDependencies.collect { d -> 
       [ 
        ("dependency-${d.group.replaceAll('\\.','-')}".toString()):"$d.group:$d.name:$d.version" 
       ] 
       }.sum() 
    ) 
    } 
} 

komut yukarıdaki MANIFEST.MF aşağıdaki üretir bağımlılıkları toplamanız, onları Map'a dönüştürmeniz ve haritaları toplamamız gerekir.

+0

Harika görünüyor - alt modüllerimden bağımlılıkları da eklemenin bir yolu da var mı? Yani, bir 'çekirdek' modülüm ve bir 'hizmet' modülüm var ve kütüphanelerim çekirdekte - şu anda bağımlılık-çekirdek olarak gösteriyorlar: hizmet: Hizmet: Yerel Yapı –

İlgili konular