2013-09-11 2 views
2

У меня есть настройка проекта, работающая с SBT до создания артефактов подпроекта.Как создать базовую настройку проекта с помощью sbt-native-packager

Я искал способ создания файла JAR, который содержит файлы JAR подпроекта, а также некоторую метаинформацию. Основываясь на предложениях, я смотрел на sbt-native-packager и, похоже, имел необходимые мне возможности.

Мне интересно, если кто-то захочет помочь мне на этом пути, предоставив советы по созданию спецификации пакета скелета для плагина.

Я думаю, что моя конфигурация довольно проста.

То, что я хочу, чтобы в конечном итоге является JAR-файл со следующим содержимым:

/manifest.xml 
module.xml 
modules/sub-project-one.jar 
     sub-project-two.jar 
     sub-project-three.jar 

Оба manifest.xml и module.xml файлы будут сгенерированы из информации о проекте. Имя полученного JAR-файла будет основано на имени корневого проекта, его версии и суффиксе «nkp.jar» (например, overlay-1.0.1.nkp.jar).

Заранее благодарим за помощь в получении помощи.

- Рэнди

ответ

2

Вот основы того, что вы хотите:

val createManifestXml = taskKey[File]("Creates the packaged maniest.xml") 

val createModuleXml = taskKey[File]("Creates the module.xml file.") 

// TODO - Define createManifestXml + createModuleXml 

mappings in Universal ++= { 
    Map(createManifestXml.value -> "manifest.xml" 
     module.xml -> "module.xml") 
} 

mappings in Universal ++= { 
    val moduleJars = 
     Seq((packageBin in subProjectOne).value, 
      (packageBin in subProjectTwo).value, 
      (packageBin in subProjectThree).value) 
    moduleJars map { jar => 
    jar -> s"module/${jar.getName}" 
    } 
} 

Это гарантирует, что TGZ/Txz/молнии могут быть сгенерированы. Затем вы можете использовать «универсальные» универсальные -> msi и универсальные -> rpm/deb сопоставления или создать это сопоставление вручную, если хотите.

Надеюсь, что это поможет!