2015-01-13 3 views
2

Я использую gradle для создания библиотеки JNI для нашего проекта java, и он отлично работает, однако я не могу понять, как сохранить град из построения как общих, так и статических версий файла , Я бы хотел отключить сборку статической библиотеки, чтобы ускорить процесс сборки. Добавление «общего» тега не похоже на трюк.Отключение создания статической библиотеки в Gradle

Из Gradle файла сборки:

libraries { 
    bulletjme { 
     shared 
    } 
} 

The Gradle вручную говорится, что «Например, при определении библиотеки под названием HelloWorld и построить на Linux, Gradle, по умолчанию, производят libhelloworld.so и libhelloworld .a двоичные файлы. " Однако он не говорит, как отключить сборку любого из двоичных файлов.

Спасибо за любые ответы!

+0

Может быть попробуйте найти задачу, которая создает статическую версию библиотеки и присваивает свойству 'enabled' значение false. – Opal

+0

Спасибо, но это было бы немного утомительно, поскольку theres автоматически сгенерированные задачи не менее чем для 6 комбинаций os/platform. – normen

+0

Тогда нет другой идеи:/ – Opal

ответ

0

Чтобы Gradle от создания статических библиотек для для «основной» компонент, вы должны иметь следующий код в build.gradle:

model { 
    components { 
     main(NativeLibrarySpec) { 
      sources { 
       c { 
        binaries.withType(StaticLibraryBinarySpec) { bin -> 
         binaries.remove(bin) 
        } 
       } 
      } 
     } 
    } 
} 
+0

Это не работает в gradle 2.11 –

2

В Gradle 2.11 это можно настроить, установив работоспособна свойство false. Хотя в документации говорится, что она доступна только для чтения, она действительно работает.

model { 
    components { 
     library(NativeLibrarySpec) { 
      binaries.withType(StaticLibraryBinarySpec) { 
       buildable = false 
      } 
     } 
    } 
} 

При проверке вывода компонентов, Gradle теперь сказать, что библиотека отключена пользователем:

$ gradle components 
... 
Binaries 
Shared library 'library:sharedLibrary' 
    build using task: :librarySharedLibrary 
    build type: build type 'debug' 
    flavor: flavor 'default' 
    target platform: platform 'linux_x86-64' 
    tool chain: Tool chain 'gcc' (GNU GCC) 
    shared library file: build/libs/library/shared/liblibrary.so 
Static library 'library:staticLibrary' (not buildable) 
    build using task: :libraryStaticLibrary 
    build type: build type 'debug' 
    flavor: flavor 'default' 
    target platform: platform 'linux_x86-64' 
    tool chain: Tool chain 'gcc' (GNU GCC) 
    static library file: build/libs/library/static/liblibrary.a 
    Disabled by user 

Это также может быть обработан глобально для всех библиотек сразу:

model { 
    components { 
     libraryA(NativeLibrarySpec) 
     libraryB(NativeLibrarySpec) 
     all { 
      binaries.withType(StaticLibraryBinarySpec) { 
       buildable = false 
      } 
     } 
    } 
} 
Смежные вопросы