This simple post is a reminder on how to create a Maven2 repository and use it with Maven in a "pom.xml" file or in Java Play!.
The first step is to create a GitHub Repository (it will be named "maven2").
Then reproduce the folder structure of a Maven Repository, as I did in my "Maven2" repo (https://github.com/enreeco/maven2).
For instance, given this artifact (jar):
<groupId>com.rubenlaguna</groupId> <artifactId>evernote-api</artifactId> <name>Official Evernote API</name> <version>1.22</version>
Create these folders:
./com
./com/rubenlaguna
./com/rubenlaguna/evernote-api
./com/rubenlaguna/evernote-api/1.22
./com/rubenlaguna/evernote-api/1.22/evernote-api-1.22.jar
./com/rubenlaguna/evernote-api/1.22/evernote-api-1.22.pom
Now you have a pubblicly accessible Maven2 repository at https://github.com/[username]/[repoName]/raw/master/ (in my case https://github.com/enreeco/maven2/raw/master/).
To consume it in your projects, just add this lines in the "pom.xml" file of your project:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.echoservice</groupId>
<version>1.0-SNAPSHOT</version>
<artifactId>echoservlet</artifactId>
<repositories>
<repository>
<id>myRepository</id>
<url>https://github.com/enreeco/maven2/raw/master/</url>
</repository>
</repositories>
<dependencies>
. . .
</depencencies>
. . .
</project>
To integrate the maven repo in a Java Play! project (necessary if you're messing with Heroku), take the "/prject/Build.scala" file and add those lines:
import sbt._
import Keys._
import PlayProject._
object ApplicationBuild extends Build {
val appName = "evernote-integration"
val appVersion = "0.1"
val appDependencies = Seq(
"com.rubenlaguna" % "evernote-api" % "1.22", //Evernote Thrift Library
"com.rubenlaguna" % "libthrift" % "1.0-SNAPSHOT",//Thrift core library
"postgresql" % "postgresql" % "9.1-901.jdbc4", //Postgres
"org.apache.httpcomponents" % "fluent-hc" % "4.2.1" //Apache HTTP client
)
val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings(
resolvers+= "personal maven repo" at "https://github.com/enreeco/maven2/raw/master/"
)
}
Maven will search for the selected jars in the default locations, but when it's not finding anything it will search for your personal resolvers.
