maven


Publish SBT project to local directory


I am trying to publish some of my SBT projects on my personal webserver. As far as I know you usually export a SBT project as a Maven directory including a POM.xml, that contains the project definitions.
As Brian Clapper pointed out, you can publish such a Maven repository by creating several configuration files and using sbt publish. In his tutorial, the repository is transferred via FTP.
I want to push my Maven repository to the server manually so I have more control. Can you give me some hints, how to accomplish this?
I figured out how you can do this. This solution creates a local Ivy repository, which is compatible with Maven.
You have to set the following values in your build.sbt:
name := "project-name"
organization := "org.example"
version := "0.0.0"
scalaVersion := "2.9.2"
publishTo := Some(Resolver.file("file", new File("/path/to/your/releases"))
After that, you can publish your release
sbt publish
This will print something like the following lines
[info] Set current project to project-name (in build file:/path/to/your/project/)
[info] Updating {file:/path/to/your/project/}default-2e51ea...
[info] Packaging /path/to/your/project/target/scala-2.9.2/project-name_2.9.2-0.0.0-S
NAPSHOT-sources.jar ...
[info] Resolving org.scala-lang#scala-library;2.9.2 ...
[info] Done packaging.
[info] Done updating.
[info] :: delivering :: org.example#project-name_2.9.2;0.0.0 :: 0.0.0 :: release :: Tue Jul 24 15:41:04 CEST 2012
[info] delivering ivy file to /path/to/your/project/target/scala-2.9.2/ivy-0.0.0.xml
[info] Wrote /path/to/your/project/target/scala-2.9.2/project-name_2.9.2-0.0.0.pom
[info] Packaging /path/to/your/project/target/scala-2.9.2/project-name_2.9.2-0.0.0.jar ...
[info] Done packaging.
[info] published project-name_2.9.2 to /path/to/your/releases/org/example/project-name_2.9.2/0.0.0-SNAPSHOT/project-name_2.9.2-0.0.0.pom
[info] published project-name_2.9.2 to /path/to/your/releases/org/example/project-name_2.9.2/0.0.0-SNAPSHOT/project-name_2.9.2-0.0.0.jar
[info] published project-name_2.9.2 to /path/to/your/releases/org/example/project-name_2.9.2/0.0.0-SNAPSHOT/project-name_2.9.2-0.0.0-sources.jar
[info] published project-name_2.9.2 to /path/to/your/releases/org/example/project-name_2.9.2/0.0.0-SNAPSHOT/project-name_2.9.2-0.0.0-javadoc.jar
[success] Total time: 1 s, completed 24.07.2012 15:41:05
You can put the generated files on any web server (e.g. http://repo.example.org/) and use it in the build script of another project by adding the following lines to your build.sbt:
resolvers += "Personal repository" at "http://repo.example.org/"
libraryDependencies += "org.example" % "project-name" % "0.0.0"
For more information, see SBT: Getting Started Library Dependencies and SBT: Publishing.
From sbt, you can use
project myproject
[myproject] $ publish-local
Which will publish to your local ivy directory (usually ~/.ivy2/local).
In the output you will see the paths of all the files:
[info] Done packaging.
[info] published myproject_2.9.1 to .../ivy2/...myproject.../poms/myproject_2.9.1.pom
[info] published myproject_2.9.1 to .../ivy2/...myproject.../jars/myproject_2.9.1.jar
[info] published myproject_2.9.1 to .../ivy2/...myproject.../srcs/myproject_2.9.1-sources.jar
[info] published myproject_2.9.1 to .../ivy2/...myproject.../docs/myproject_2.9.1-javadoc.jar
[info] published ivy to .../ivy2/...myproject.../ivys/ivy.xml
Then you can grab those files and upload them to your ftp server.
I would still recommend the approach described in the linked blogpost though. At least that's how we do it. Just a small note on storing credentials. Use the following sbt setting:
val credentials = Credentials(Path.userHome / ".ivy2" / ".my-credentials")
The credentials file will look like this:
realm=Sonatype Nexus Repository Manager
host=nexus.example.com
user=deployment
password=pass
The credentials are the same you use for logging in to the Nexus web interface.

Related Links

jenkins maven setPerCoreThreadCount
Can't download artefacts from my nexus server
IntelliJ Error : “Cannot Resolve Symbol” in all maven dependencies
How do I properly configure h2 in OpenShift
Use Android Studio With Maven ONLY
Resolving transitive dependency
Maven Clean Fails on Linux Vagrant Shared Drive
How to properly mavenize grails project in Netbeans
OpenShift maven plugin
Serving GWT Dependency in .war Project
Getting an unexpected exception in NetBeans
Maven tomcat plugin - how to fail build if deployment fails
how to use maven command to deploy war package to local tomcat
VM Options missing for Maven Project
Create Symlink for dependencies in Maven assembly
Gradle - get jar and native lib from Maven (snapshots) repository

Categories

HOME
xamarin
pdf
wso2
mfc
comparison
onedrive
relayjs
fme
bpmn
read-eval-print-loop
setup-deployment
analysis
tizen-web-app
leon
microservices
jxls
disassembler
ebean
in-app-purchase
iggrid
maude-system
izpack
row
mapserver
clearcase-ucm
workload-scheduler
dosgi
libtiff
pythonanywhere
oxyplot
textfield
predix
visjs
object-detection
cx-freeze
ehcache
facebook-instant-articles
sox
wkwebview
blazemeter
dxf
sparse-matrix
social-media
elasticsearch-net
ejabberd-module
gitignore
subdomains
delicious-api
google-sites-2016
grails-3.1
subset-sum
y86
libvpx
node-gyp
cubic-spline
jsch
hibernate-tools
hls.js
lowpass-filter
brightcove
jxcore
feeds
snmptrapd
sybase-asa
akka-cluster
sqlbulkcopy
python-cryptography
cudafy.net
flutterwave
root-framework
pcf
skobbler-maps
py2app
player
qpid
ubuntu-10.04
skype4py
make-install
design-by-contract
netmq
endeca-workbench
django-unittest
operation
processmodel
nsight
graph-api-explorer
proj4js
xc16
codeigniter-url
gui-test-framework
preferences
internet-connection
onactivityresult
navigationservice
hippomocks
comexception
xceed-datagrid
resty-gwt
terminal-services
quantlib-swig
jmapviewer
smtp-auth
cassini-dev
factory-method
distutils
angularjs-controller
bluepill
armcc
ocx
chrono
infobox
table-footer
calling-convention
propagation
xfbml
site.master
webkit.net
photoshop-cs4
ti-dsp
port-number
multiple-languages

Resources

Mobile Apps Dev
Database Users
javascript
java
csharp
php
android
MS Developer
developer works
python
ios
c
html
jquery
RDBMS discuss
Cloud Virtualization
Database Dev&Adm
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App