2013-10-25 15 views
10

Vogliamo utilizzare il repository ivy/maven aziendale interno (artifactory) per migliorare la velocità di risoluzione e il download dei file jar, e inoltre vogliamo utilizzarlo per scambiare file jar binari tra diversi team nella nostra organizzazione.(SBT) Come disabilitare il resolver predefinito e utilizzare solo il resolver interno dell'azienda?

So che possiamo costringere SBT per passare attraverso delega impostando ~/.repositories con

[repositories] 
    local 
    my-ivy-proxy-releases: http://repo.alpinenow.com/artifactory/repo/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext] 
    my-maven-proxy-releases: http://repo.alpinenow.com/artifactory/repo/ 

e poi lanciare SBT con -Dsbt.override.build.repos=true. Questo metodo funziona per me.

Tuttavia, è piuttosto complicato chiedere a tutti gli sviluppatori di configurare in questo modo. Ci stiamo chiedendo se possiamo sostituire completamente i resolver predefiniti in Build.scala e plugin.sbt senza configurazione aggiuntiva.

Finora, ho provato le seguenti soluzioni senza successo.

1) In entrambi Build.scala e plugin.sbt, ho aggiunto

resolvers := "Local Repo" at "http://repo.alpinenow.com/artifactory/repo/", 

externalResolvers := Seq(Resolver.url("Local Repo", url("http://repo.alpinenow.com/artifactory/repo"))(Resolver.ivyStylePatterns)), 

ma si scarica ancora i vasi da typesafe e maven1.

2) Ho quindi deciso di mettere un file repository nella cartella del progetto, e ha cercato di aggiungere l'opzione java direttamente all'interno plugin.sbt, e Build.scala con

System.setProperty("-Dsbt.override.build.repos", "true"), 

System.setProperty("-Dsbt.repository.config", "project/repositories"), 

ma ancora non funziona. Sono curioso di sapere quando SBT ottiene le opzioni java per i resolver dato che, ovviamente, è prima di plugin.sbt e Build.scala.

Qualche idea?

Grazie.

DB Tsai

+0

Secondo la documentazione ufficiale, la configurazione del repository non dovrebbe essere in ~ ~/.sbt/repositories', non '~/.repositories'? – Luciano

risposta

2

Se ci si allontana dallo script di shell sbt-extras come un sostituto per lo script predefinito launcher, penso che si potrebbe facilmente modificare che con la creazione e l'aggiunta di ~/.repositories-Dsbt.override.build.repos=true. Quindi tutto ciò che devi fare è assicurarti che i tuoi sviluppatori usino quello script.

+0

Sì. Se non riesco a trovare un modo per farlo solo in Build.scala, probabilmente sostituirò lo script di avvio predefinito. Ma è l'ultimo modo che farò. –

+0

In questo modo, usiamo questa come nostra soluzione. Grazie. –

+0

dove si imposta '-Dsbt.override.build.repos = true'? In un file o come parametro sbt? – pedromss

1

Sono sempre aggiungendo SBT costruire come parte della mia repo in SVN/GIT, chiudere con il codice. Quindi non ho questi problemi.

Costa circa 1 MB di spazio quindi è abbastanza economico e risolve un sacco di problemi. Tutti gli sviluppatori usano lo stesso strumento di compilazione. Anche se provo a creare Continues Integration o un processo di Continues Delivery più avanzato, tutte le configurazioni di SBT saranno già ben configurate nel mio SCM. Mi metterò una fonte di vera :)

Problemi correlati