Jongo Maven Dependency causing problems - java

I am currently trying to use the Jongo project to connect to a remote MongoDB.
To do so, I added these dependencies to my project :
<dependencies>
<dependency>
<groupId>org.jongo</groupId>
<artifactId>jongo</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.6.5</version>
</dependency>
</dependencies>
I already had some troubles with the first dependency (jongo:1.0), since maven could not retreive this version (the latest maven knew was 0.4) : Intellij tells me Dependency "org.jongo:jongo:1.0" not found. Yet, the dependency can be found there
I managed to get it via Project Structure -> Librairies
The problem is that this dependency is now local, and anyone who clones this project must import this dependency manually, which is not suitable.
I am using Intellij IDEA 13.0

First, the Sonatype dependency version in the snapshots repository you had linked in your post is 1.1-SNAPSHOT and not 1.0.
It's not recommended to use 3rd party snapshots in your build
If however you insist, you need to add Sonatype snapshots repository to your maven build as follows:
<repository>
<id>sonatype-snapshots</id>
<name>sonatype-snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
EDIT
The 1.0 version resides in Sonatype releases repository:
<repository>
<id>sonatype-releases</id>
<name>sonatype-releases</name>
<url>https://oss.sonatype.org/content/repositories/releases/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>

Jongo 1.0 is in maven central. There is no need for extra repository configuration in your pom.

Related

Cannot resolve dropwizard version 2.1.3-SNAPSHOT in maven project pom in Intellij

Using the following dependency entry in my pom:
<dependencies>
<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-core</artifactId>
<version>${dropwizard.version}</version>
</dependency>
</dependencies>
Using an older dropwizard version works fine:
<properties>
<dropwizard.version>2.0.9</dropwizard.version>
</properties>
But using the most up to date version as listed on mvnrepository:
<dropwizard.version>2.1.2</dropwizard.version>
gives the following error:
Dependency 'io.dropwizard:dropwizard-core:2.1.2' not found
Additionally, using the recommended version in dropwizard's tutorial page does not work either:
<dropwizard.version>2.1.3-SNAPSHOT</dropwizard.version>
I have the following to pull snapshots in my pom:
<repositories>
<repository>
<id>nexus</id>
<name>nexus-snapshot</name>
<url>http://localhost:8081/repository/maven-snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
Update:
By deleting io/dropwizard from my ~/.m2/repository directory and invalidating caches & restarting, I was able to load dropwizard version 2.1.2. I am still unable to determine how to properly load the SNAPSHOT version. I don't know what repository settings to add to my pom file in order to correctly link to that dependency.

The best way to get rid from SNAPSHOT version in the dependency

I want to use dependency from the Cloudera Maven repository:
Extract from my pom.xml:
<repositories>
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/cloudera/cloudera-repos/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>0.9.0-cdh4.6.0</version>
</dependency>
It depends on parent "spark-parent" that referenced to parent with SNAPSHOT version.
Extract from spark-parent pom.xml (https://repository.cloudera.com/artifactory/cloudera-repos/org/apache/spark/spark-parent/0.9.0-cdh4.6.0/):
<parent>
<groupId>com.cloudera.cdh</groupId>
<artifactId>cdh-root</artifactId>
<version>4.6.0-SNAPSHOT</version>
</parent>
<groupId>org.apache.spark</groupId>
<artifactId>spark-parent</artifactId>
<version>0.9.0-cdh4.6.0</version>
When I run simple "mvn clean package" I have the error that this SNAPSHOT artifact cannot be found.
What is the simplest way to solve this? A solution must be a change in pom.xml or in the build command.
Thanks.
The Cloudera Maven repository doesn't have the artifact com.cloudera.cdh:cdh-root:pom:4.6.0-SNAPSHOT, therefore you won't be able to build your project using it.
However, you can use the Spring cache of this repository: http://repo.spring.io/cloudera-cache. It contains the missing artifacts. You will also have to enable snapshot dependencies inside your repository:
<repositories>
<repository>
<id>cloudera-cache</id>
<url>http://repo.spring.io/cloudera-cache/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>

How to add dependencies from Sonatype snapshots in Maven

Say I have written a library and put it on Sonatype's snapshot repository. Suppose the groupId is my.group, the artifactId is my_lib, and version is 0.0.1-SNAPSHOT.
With the SBT build tool, one can simply add the following line to build.sbt to enable adding dependencies from Sonatype's snapshot repository:
resolvers += Resolver.sonatypeRepo("snapshots")
And then I can freely add, after this line, the following line:
libraryDependencies += "my.group" %% "my_lib" % "0.0.1-SNAPSHOT"
How do I do this in Maven? Obviously, I cannot just add the following:
<dependency>
<groupId> my.group </groupId>
<artifactId> my_lib </artifactId>
<version> 0.0.1-SNAPSHOT </version>
</dependency>
because this library is not published on Maven Central Repository. What else needs to be added?
You can add repositories to your POM by using the <repositories> element, under <project>. This can also be added inside settings.xml if you want to add it globally. If your library is published on Sonatype snapshot repository, you can add it like this:
<repositories>
<repository>
<id>sonatypeSnapshots</id>
<name>Sonatype Snapshots</name>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</repository>
</repositories>
This configures a new repository that is enabled for snapshots but disabled for releases. Maven will look at this repository only to resolve snapshot dependencies.
With this declaration, you can then add your dependency like you did.

Missing artifact error while adding a depentency in pom

Am trying to add a dependency sauce-connect-plugin in to pom.xml file
<groupId>com.saucelabs.maven.plugin</groupId>
<artifactId>sauce-connect-plugin</artifactId>
<version>2.1.18</version>
</dependency>
But building the pom file am getting
Missing artifact com.saucelabs:sauce-connect:jar:3.1.32
Also i mentioned the repository
<repositories>
<repository>
<id>saucelabs-repository</id>
<url>https://repository-saucelabs.forge.cloudbees.com/release</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
in this url http://repository-saucelabs.forge.cloudbees.com/release/com/saucelabs/sauce-connect/3.1.32/
sauce-connect:jar:3.1.32 is present
Then why Missing artifact error is showing??
What wrong with me.
When i directly add following in tho the pom file and added the repository am getting the same error
<dependency>
<groupId>com.saucelabs</groupId>
<artifactId>sauce-connect</artifactId>
<version>3.1.32</version>
</dependency>
You have used mismatched versions:
sauce-connect-plugin presents in:
http://repository-saucelabs.forge.cloudbees.com/release/com/saucelabs/sauce-connect-plugin/
which have only versions of 1.0.11, 1.0.12, 1.0.13 and 1.0.14.
But you have tried to download 2.1.18
What you mentioned with the URL http://repository-saucelabs.forge.cloudbees.com/release/com/saucelabs/sauce-connect/3.1.32/ will not represent for sauce-connect-plugin. It will represent for only sauce-connect
So you should try with following dependency:
<dependency>
<groupId>com.saucelabs.maven.plugin</groupId>
<artifactId>sauce-connect-plugin</artifactId>
<version>1.0.11</version><!-- 1.0.11, 1.0.12, 1.0.13 or 1.0.14 -->
</dependency>
If you need exactly the version of 2.1.18, then you need to upload the artifact in the location http://repository-saucelabs.forge.cloudbees.com and try.
Here you can find someone who is also using this, try to compare your pom https://github.com/saucelabs/sauce-java/blob/master/sauce-connect-plugin/pom.xml

How to add Spring to new Java Project in Eclipse?

I have Eclipse with m2 plugin and want to make new project with Spring.
In maven central repo are only Spring 1.x and Spring 2.x versions and adding http://maven.springframework.org/milestone to pom.xml don't change anything.
I the central repository there are also the latest final Spring artifacts (3.0.5.RELEASE).
E.g. http://repo1.maven.org/maven2/org/springframework/spring-beans/3.0.5.RELEASE
If you need milestones for 3.1 you should add repository definition to your pom.xml as follows:
<repository>
<id>spring-maven-milestone</id>
<name>Springframework Maven Milestone Repository</name>
<url>http://maven.springframework.org/milestone</url>
</repository>
And then you can define the dependency:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>3.1.0.M2</version>
</dependency>
There is also repository containing snapshots (nightly):
<repository>
<id>spring-maven-snapshot</id>
<snapshots><enabled>true</enabled></snapshots>
<name>Springframework Maven SNAPSHOT Repository</name>
<url>http://maven.springframework.org/snapshot</url>
</repository>
Seems like you want to use springs own repositories, but you need to add them in your settings.xml file (~/.m2/settings.xml), not in the pom.xml in your project.
<repository>
<id>repository.springframework.maven.release</id>
<name>Spring Framework Maven Release Repository</name>
<url>http://maven.springframework.org/release</url>
</repository>
<repository>
<id>repository.springframework.maven.milestone</id>
<name>Spring Framework Maven Milestone Repository</name>
<url>http://maven.springframework.org/milestone</url>
</repository>
<repository>
<id>repository.springframework.maven.snapshot</id>
<name>Spring Framework Maven Snapshot Repository</name>
<url>http://maven.springframework.org/snapshot</url>
</repository>

Categories