Maven doesn't find dependency - java

I added a dependency in maven for servlet as seen here, here and here
Maven doesn't find it :
dependency javax.servlet:javax.servlet-api:3.0.1 not found
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
I tried to add this, which doesn't work :
<repository>
<id>maven2</id>
<url>https://mvnrepository.com</url>
</repository>
or this:
<repository>
<id>maven2</id>
<url>http://repo1.maven.org/maven2/javax/servlet/javax.servlet-api/3.0.1/</url>
</repository>

First of all you need to verify if you have Internet connectivity and then you can try to purge and resolve the dependencies in the local Maven repository as there could be some corrupted package, you can try the following command to accomplish this:
mvn dependency:purge-local-repository
Take a look to Purging local repository dependencies for more information.

Use default repostiory:
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>http://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
Don't do like this: http://repo1.maven.org/maven2/javax/servlet/javax.servlet-api/3.0.1/
Even you should remove all content of the tag <repositories> or <repository> and all things inside these, Maven will automatic use default configuration.
Reference:
http://maven.apache.org/pom.html#The_Super_POM

Related

Can't get "Gluon Glisten" dependency library in Eclipse's Maven

https://mvnrepository.com/artifact/com.gluonhq/charm-glisten/5.0.2
I want to use Gluon\AutoCompleteTextField, but I can't get this dependency library in Eclipse's Maven. What's the problem? (Jdk11, JavaFX11)
update your pom with
<project>
...
<repositories>
<repository>
<id>charm-glisten</id>
<name>charm-glisten Repository</name>
<url>https://nexus.gluonhq.com/nexus/content/repositories/releases/</url>
<layout>default</layout>
</repository>
</repositories>
...
</project>
the problem already explained here

By using alternative repository for Maven I am not able to download some dependencies in java project?

I am working behind a proxy and I am facing SSL issues. Therefore, I can't use HTTPS propertly, so in Eclipse in the settings.xml file of maven I set the repository to "http://repo1.maven.org/maven2", i.e. HTTP, as follows:
<settings>
<activeProfiles>
<activeProfile>securecentral</activeProfile>
</activeProfiles>
<profiles>
<profile>
<id>securecentral</id>
<repositories>
<repository>
<id>central</id>
<url>http://repo1.maven.org/maven2</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://repo1.maven.org/maven2</url>
<releases>
<enabled>true</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
</settings>
It worked for some dependencies but when I added one dependency to the pom.xml specifically this one:
<dependency>
<groupId>com.twelvemonkeys.imageio</groupId>
<artifactId>imageio-tiff</artifactId>
<version>3.3.2</version>
</dependency>
Eclipse couldn't download it (I don't know if this issue is from the proxy, from the repository itself, or some other issue)
My question:
Does setting the repository to "http://repo1.maven.org/maven2" limit the number of plugins, libraries, or anything I can download using the normal repository "https://mvnrepository.com/", or it is exactly the same without any limitation or difference except that the first one is through HTTP not HTTPS ?
I hope you understand that both of these are repositories which include artifacts uploaded via distributionManagement by developers.
They are not same in terms of the endpoint you would reach.
The preferred would be the one for maven central - http://repo1.maven.org/maven2 which can be looked in at https://search.maven.org/
There is a useful link for consumers to start using it. - central.sonatype.org/pages/consumers and the code shared seems to be following that very likely (Consumer - Apache Maven)

Maven: copy local jar to target dir

I want a local jar located in C:/myLibs/TDKLogging/TDKLogging-2.1.6.jar
to be copied to my target dir when generating the war, so I modified my pom as follows:
<repositories>
<repository>
<id>JBossNexus</id>
<name>JBoss Nexus Repository Manager</name>
<layout>default</layout>
<url>https://webgate.tdk.com/JBoss/nexus/content/groups/public</url>
</repository>
<repository>
<id>my-local-repo</id>
<url>file://C:/myLibs/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>tdk.com.iot.log</groupId>
<artifactId>TDKLogging</artifactId>
<version>2.1.6</version>
<type>jar</type>
</dependency>
..
But I got this error
Could not find artifact tdk.com.iot.log:TDKLogging:jar:2.1.6 in tdkPublicRepository (https://webgate.tdk.com/JBoss/nexus/content/groups/public)
How to tell maven to search the artifact in a specific repo ???? Can a project work with more than 1 repo at the same time ???? because I only have 1 jar in the local repo, the others ones are stored in the public repo
you may have more than one repo specified.
<repositories>
<repository>
<id>Webgate repository</id>
<url>https://webgate.tdk.com/JBoss/nexus/content/groups/public/</url>
</repository>
<repository>
<id>JBoss repository</id>
<url>http://repository.jboss.org/nexus/content/groups/public/</url>
</repository>
<repository>
<id>java.net</id>
<url>https://maven.java.net/content/repositories/public/</url>
</repository>
</repositories>
What about your particular situation - you have to add your jar and pom to your local repository. You have to run few commands.
Check this
How to include custom library into maven local repository?
and this Guide to installing 3rd party JARs

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>

Artifact com.oracle.toplink:toplink:jar:10.1.3 not found

I am trying to create a spring 4 project from scratch and maven is unable to resolve the dependency of com.oracle.toplink:toplink:jar:10.1.3
The following are the repositories that I have set in the pom.xml
<repositories>
<repository>
<id>repo2.maven.org</id>
<name>repo2.maveng.org</name>
<url>http://repo2.maven.org/maven2</url>
</repository>
<repository>
<id>repo1.maven.org</id>
<name>repo1.maven.org</name>
<url>http://repo1.maven.org/maven2</url>
</repository>
<repository>
<id>java.net</id>
<name>java.net</name>
<url>http://download.java.net/maven/2</url>
</repository>
<repository>
<id>com.springsource.repository.bundles.release</id>
<name>EBR Spring Release Repository</name>
<url>http://repository.springsource.com/maven/bundles/release</url>
</repository>
<repository>
<id>com.springsource.repository.bundles.external</id>
<name>EBR External Release Repository</name>
<url>http://repository.springsource.com/maven/bundles/external</url>
</repository>
<repository>
<id>repo.spring.io</id>
<name>repo.spring.io-releases</name>
<url>http://repo.spring.io/ext-release-local</url>
</repository>
</repositories>
Questions:
Which repo should I add to make sure maven resolves this dependency?
Usually, how does one know which repo has a particular artifact belong to?
The error message I see is below. Does this error mean Maven did not try looking up for it in other repositories mentioned?
Could not find artifact com.oracle.toplink:toplink:jar:10.1.3 in repo2.maven.org (http://repo2.maven.org/maven2) -> [Help 1]
The is Oracle toplink - toplink-10.1.3 in maven's Central repository http://repo1.maven.org/maven2. So you just only need to add the dependency in pom.xml, not the repository.
<dependency>
<groupId>com.oracle.toplink</groupId>
<artifactId>toplink</artifactId>
<version>10.1.3</version>
</dependency>
Source:
http://mavenhub.com/mvn/central/com.oracle.toplink/toplink/10.1.3
http://mvnrepository.com/artifact/com.oracle.toplink/toplink/10.1.3

Categories