Oracle ojdbc8 12.2.0.1 Forbidden by Maven - java

Oracle ojdbc8 12.2.0.1 Forbidden by Maven since December 2017, before that worked well. What configuration has changed on the Oracle repository (setting.xml)?
Maven project: https://github.com/sgrillon14/MavenSampleOracleJdbc
Full trace: https://travis-ci.org/sgrillon14/MavenSampleOracleJdbc

This is from the Maven Central Repository. Please try with these maven settings in your pom file to pull from the Maven Repository. The Group Id is different.
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>12.2.0.1</version>
</dependency>

Since Oracle JDBC Driver is not in Maven repository, Download ojdbc8.jar and run the below command.
mvn install:install-file -Dfile=/home/cm/Videos/ojdbc8.jar -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=12.1.0.2 -Dpackaging=jar
Add this dependency in pom.xml
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc8</artifactId>
<version>12.1.0.2</version>
</dependency>

It's possible that the Oracle Maven terms have changed. You may need to re-register on the Oracle Maven site: http://www.oracle.com/webapps/maven/register/license.html
I tried your github script and it worked fine with me:
$ mvn clean install --settings test/mvnsettings.xml
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building mavensampleoraclejdbc 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) # mavensampleoraclejdbc ---
[INFO] Deleting /Users/jean/Downloads/MavenOracle/MavenSampleOracleJdbc-master/target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) # mavensampleoraclejdbc ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /Users/jean/Downloads/MavenOracle/MavenSampleOracleJdbc-master/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) # mavensampleoraclejdbc ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) # mavensampleoraclejdbc ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /Users/jean/Downloads/MavenOracle/MavenSampleOracleJdbc-master/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) # mavensampleoraclejdbc ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) # mavensampleoraclejdbc ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) # mavensampleoraclejdbc ---
[WARNING] JAR will be empty - no content was marked for inclusion!
[INFO] Building jar: /Users/jean/Downloads/MavenOracle/MavenSampleOracleJdbc-master/target/mavensampleoraclejdbc-1.0.0-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) # mavensampleoraclejdbc ---
[INFO] Installing /Users/jean/Downloads/MavenOracle/MavenSampleOracleJdbc-master/target/mavensampleoraclejdbc-1.0.0-SNAPSHOT.jar to /Users/jean/.m2/repository/com/github/sgrillon14/mavensampleoraclejdbc/1.0.0-SNAPSHOT/mavensampleoraclejdbc-1.0.0-SNAPSHOT.jar
[INFO] Installing /Users/jean/Downloads/MavenOracle/MavenSampleOracleJdbc-master/pom.xml to /Users/jean/.m2/repository/com/github/sgrillon14/mavensampleoraclejdbc/1.0.0-SNAPSHOT/mavensampleoraclejdbc-1.0.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.900 s
[INFO] Finished at: 2018-02-12T17:06:49+01:00
[INFO] Final Memory: 12M/309M
[INFO] ------------------------------------------------------------------------
wagram:MavenSampleOracleJdbc-master jean$

Here's the underlying problem
Access denied to: https://maven.oracle.com/com/oracle/jdbc/ojdbc8/12.2.0.1/ojdbc8-12.2.0.1.pom , ReasonPhrase:Forbidden
I'm guessing you have the wrong username/password in your settings.xml. Try hitting the URL in your browser and enter the username/password. Possibly your credentials have expired? Or maybe you have a different settings.xml on travis than your localhost?

If you don't have dependency add it otherwise for oracle, replace it with the following code:
<dependency>
<groupId>com.oracle.ojdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.3.0.0</version>
</dependency>

I tested for downloading ojdbc8.jar from 12.2.0.1. I was able to download without any issues. But, there is a warning. But, the warning is due to the missing *.md5 file in the maven repository. (We are looking into that issue)
Downloading: https://maven.oracle.com/com/oracle/jdbc/ojdbc8/12.2.0.1/ojdbc8-12.2.0.1.pom
[WARNING] Checksum validation failed, expected 3626be7f20ea523d9fd6aca576d5aba3f7afb3fe but is f1be766b419370110b86bd088a69c1bfcdca6989 for https://maven.oracle.com/com/oracle/jdbc/ojdbc8/12.2.0.1/ojdbc8-12.2.0.1.pom
Downloaded: https://maven.oracle.com/com/oracle/jdbc/ojdbc8/12.2.0.1/ojdbc8-12.2.0.1.pom (7 KB at 0.4 KB/sec)

The Oracle Maven repository requires you to agree with the terms and conditions of using it. Thus, in order to provide this agreement:
go to Oracle.com and login
go to https://maven.oracle.com
the page shown shows:
...
Directory browsing is not allowed on the Oracle Maven Repository.
Registration is required to access the Oracle Maven Repository. To register, please visit the registration site.
...
The link to the "registration site" is actually http://www.oracle.com/webapps/maven/register/license.html
where you have to accept the terms and conditions. This allows you to use the Oracle Maven repository.
For further details on setting up Maven and published drivers, pleaase refer to
https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides

version in the MANIFEST is 12.2.0.1.0 not 12.2.0.1 but still the problem
"Content Server Request Failed
Error Unable to download '(null)'. 'path:/Enterprise Libraries/content/maven/content/com/oracle/jdbc/ojdbc8/12.2.0.1/ojd‌​bc8-12.2.0.1.pom' does not exist.
"
my credential are OK and got the problem on
https://www.oracle.com/content/secure/maven/content/com/oracle/jdbc/ojdbc6/ojdbc6-11.2.0.4.0.pom
(the URL you are redirected to when accessing to maven.oracle.com)
too
FYI:
Latest attempt this Sat 6/01/2018 morning: OK, was able to download ojdbc8 POM from a browser.

This artifact was moved to:
com.oracle.database.jdbc » ojdbc10

Related

Spring Boot java.lang.NoClassDefFoundError: org/apache/maven/shared/utils/logging/MessageBuilder

I'm studying SpringBoot with helloworld application, but encountered an issue after clicking Maven package with below errors, and tried to find the answer a couple of hours, but still cannot fix it. Could you help me out. Thanks.
Here is the source code download link: download here
[INFO] ---------------< org.example:spring-boot-01-helloworld >----------------
[INFO] Building spring-boot-01-helloworld 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[WARNING] The POM for org.apache.maven:maven-plugin-api:jar:2.2.1 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[WARNING] The POM for com.google.code.findbugs:jsr305:jar:2.0.1 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) # spring-boot-01-helloworld ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) # spring-boot-01-helloworld ---
[WARNING] The POM for org.apache.maven.shared:maven-shared-incremental:jar:1.1 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[WARNING] Error injecting: org.apache.maven.plugin.compiler.CompilerMojo
*java.lang.NoClassDefFoundError: org/apache/maven/shared/utils/logging/MessageBuilder*
at java.lang.Class.getDeclaredMethods0 (Native Method)
at java.lang.Class.privateGetDeclaredMethods (Unknown Source)

Maven tries download multimodule dependency on `validate` phase

From a build pipeline I want to run validate phase for things like the enforcer plugin. However it does not work for a multimodule project as it tries to download dependencies from repository which are inside the project. However, compile phase does not do that, but for me it is not an option as it is too slow.
pom.xml:
<module>lib</module>
<module>app</module>
lib/pom.xml
<version>1.2.3</version>
app/pom.xml
<dependency>
<artifactId>lib</artifactId>
<version>1.2.3</version>
</dependency>
So, if I do mvn compile it works fine.
But if I do mvn validate it fails validating app module as it tries to download lib-1.2.3 from maven repo. For some reason it now could not see that the lib is a neighbour dependency. Why?
I have created a small repo: https://github.com/kan-izh/so63963768
mvn compile
[INFO] --- maven-enforcer-plugin:3.0.0-M3:enforce (enforce-no-snapshots) # app ---
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) # app ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\Workspace\repo\so63963768\app\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) # app ---
[INFO] No sources to compile
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] parent ............................................ SUCCESS [1.612s]
[INFO] lib ............................................... SUCCESS [1.224s]
[INFO] app ............................................... SUCCESS [0.056s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
mvn validate
[INFO] --- maven-enforcer-plugin:3.0.0-M3:enforce (enforce-no-snapshots) # app ---
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] parent ............................................ SUCCESS [0.979s]
[INFO] lib ............................................... SUCCESS [0.015s]
[INFO] app ............................................... FAILURE [0.020s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.180s
[INFO] Finished at: Wed Sep 23 11:27:38 BST 2020
[INFO] Final Memory: 7M/34M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce (enforce-no-snapshots) on project app: Execution
enforce-no-snapshots of goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce failed: org.apache.maven.shared.dependency.graph.
DependencyGraphBuilderException: Could not resolve following dependencies: [com.so.q63963768:lib:jar:1.2.3 (compile)]: Could not resolve depend
encies for project com.so.q63963768:app:jar:1.2.3: Failure to find com.so.q63963768:lib:jar:1.2.3 in http://xxxxxxxxxxxxx.xx.xxxxxxxxxxxxxxxxx.
com:8081/repository/maven-public/ was cached in the local repository, resolution will not be reattempted until the update interval of nexus has
elapsed or updates are forced -> [Help 1]
This is a good question, and it shows a small flaw in how Maven handles dependencies.
You need to know that for every plugin-goal you can define if dependencies should be resolved, and for which scope. (and there's a small difference if having only the poms is enough, or that you also need the artifacts)
compiler:compile requires the dependencies that are required during compile, compiler:testCompile requires the dependencies that are required during test.
For the enforce goal it is tricky: the goal itself doesn't require to have resolved dependencies, nor do most rules( like requireJavaVersion or requireMavenVersion), but some rules do, like the one you try to enforce.
Ideally rules can define if they need to have resolved dependencies, but right now the API doesn't support that.
So you have a couple of solutions: always run with compile, or have an execution-block bound to the compile-pahse if it requires artifacts.

Maven version:update not updating the given version, it compares with the repo and update to the latest instead of given version

I want to back patch my fix to one of my old version jar.
I have releases from 1.0.85, 1.0.86, 1.0.87, 1.0.88, 1.0.89 in my nexus repository.
I want update my fix ie back patch the version 1.0.85
I will update the the parent pom version using version:update-parent and the new version i given as
1.0.85_b1.
But it checks the repository and update the latest version from the nexus repo. ie 1.0.89.
Its not updating 1.0.85_b1.
mvn -f pom.xml -DallowSnapshots=false -DgenerateBackupPoms=false -DnewVersion=1.0.85b1 -Dproperty=parentVersion versions:update-parent
maven logs
`
--- versions-maven-plugin:2.7:update-parent (default-cli) # componet ---
[INFO] artifact com.xxxx.yyy:zzzz-aaaa: checking for updates from xxxxx
[INFO] artifact com.xxxx.yyy:zzzz-aaaa: checking for updates from xxxxx
[INFO] artifact com.xxxx.yyy:zzzz-aaaa: checking for updates from xxxxx
[INFO] artifact com.xxxx.yyy:zzzz-aaaa: checking for updates from xxxxx
[INFO] artifact com.xxxx.yyy:zzzz-aaaa: checking for updates from xxxxx
[INFO] artifact com.xxxx.yyy:zzzz-aaaa: checking for updates from xxxxx
[INFO] artifact com.xxxx.yyy:zzzz-aaaa: checking for updates from xxxxx
Downloading from nexus-xxx-rep: http://maven.xxxgroup.com/content/groups/all/com/xxx/xxx/componet-parent/1.0.89/componet-parent-1.0.89.pom
Downloaded from nexus-xxx-rep: http://maven.xxxgroup.com/content/groups/all/com/xxx/xxx/componet-parent/1.0.89/componet-parent-1.0.89.pom (4.8 kB at 5.4 kB/s)
[INFO] Updating parent from 1.0.85 to 1.0.89
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] componet proj DEV.0.0-SNAPSHOT .................... SUCCESS [ 3.211 s]
[INFO] componet 1.0.85 ...................................... SUCCESS [ 11.108 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 15.352 s
[INFO] Finished at: 2019-10-17T21:02:34+05:30
`
You need to use the parameter parentVersion. Here, you can set lower and upper bounds for the version you desire.
https://www.mojohaus.org/versions-maven-plugin/examples/update-parent.html

How to use pom.xml file with a simple Java project

I have created a simple Java project in Eclipse and created a pom.xml file in the root folder. Now I want to download all of the Spring Framework dependencies by executing the pom.xml file.
Is it possible to use the pom.xml file in a simple Java project not in a Maven project and download all of the Spring Framework dependencies?
I have right clicked on pom.xml file and run as "Maven install"
on console i found this.
[INFO] Scanning for projects...
[INFO]
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building my-app 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) # my-app ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/oodles/Documents/MyWorkspace/MySpringProjectMaven/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) # my-app ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) # my-app ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/oodles/Documents/MyWorkspace/MySpringProjectMaven/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) # my-app ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) # my-app ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) # my-app ---
[WARNING] JAR will be empty - no content was marked for inclusion!
[INFO] Building jar: /home/oodles/Documents/MyWorkspace/MySpringProjectMaven/target/my-app-1.jar
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) # my-app ---
[INFO] Installing /home/oodles/Documents/MyWorkspace/MySpringProjectMaven/target/my-app-1.jar to /home/oodles/.m2/repository/com/qasim/app/my-app/1/my-app-1.jar
[INFO] Installing /home/oodles/Documents/MyWorkspace/MySpringProjectMaven/pom.xml to /home/oodles/.m2/repository/com/qasim/app/my-app/1/my-app-1.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.013 s
[INFO] Finished at: 2015-03-18T23:32:49+05:30
[INFO] Final Memory: 8M/150M
[INFO] ------------------------------------------------------------------------
i could not understand what happen after clicking on Maven install. Some folder created named target folder with my-app.jar and i added this jar to build path . But i think it is not working. I have Test class with following code:
package com.qasim.app;
public class Test {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("MySpringConfig.xml");
Restaurant obj = (Restaurant) context.getBean("restaurantBean");
obj.greetCustomer();
}
}
And pom.xml file:
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.qasim.app</groupId>
<artifactId>my-app</artifactId>
<version>1</version>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.0.5.RELEASE</version>
</dependency>
</dependencies>
</project>
But in Test class compiler complaing at application context line "create class named applicationContext" if the dependencies got downloaded after running "Maven install" command then it should show some "Import hint" for application context
Update:
A advice to start off: I realy recomend to consult the official documentation found here http://maven.apache.org/guides/index.html - take your time to read at least the points below "Introductions" since it will explain you on how to use Maven and how it works ;)
I copy&pasted your pom.xml and could compile your Java class (well i removed the Restaurant reference and just created a empty file for the Spring config).
Looking at your build output:
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) # my-app ---
[INFO] No sources to compile
Maven tells you it dit not compile any sources - this strongly implies you are not using the correct standard Maven folder structure.
I just set up a mini-project using your pom.xml and the Maven standard folder structure like so:
(Note: I had to remove the paths due to company security restrictions as I am writing from within my office)
If you setup your classes under src/main/java and place your config under src/main/resources Maven will be able to locate the class and compiles it while it will also take your resources and places them in your jar. In my case i just created a empty file MySpringConfig.xml which obviously wont work when trying to load the ApplicationContext you can however see in the stacktrace below that the file itself could be found and loaded (but while parsing it the empty content was not satisfying for the SAX-parser - i bet yours looks better :).
Try it out and dont forget to consult the maven reference since i did not go too deep into the folder structures etc. ;)
Yes - you should be able to right click the pom.xml, choose run AS and for example choose Maven install (corresponds to mvn install) or define the phases to be processed under Maven build...
Alternatively you should be able to create a new Launch configuration for Maven and point the Base directory: to where your pom.xml resides.
Note: Afaik you need the M2-Plugin installed in Eclipse to work with Maven (i dont know lots about that funny tool but i have a Eclipse Juno here that was able to build a Maven project created manually inside a "simple java application" project).
Note: If you just need the dependencies and use Maven as a "helper" to download them you can always manually download the Jar from most remote repositories like for example here: http://mvnrepository.com/search?q=spring

Jenkins not running TestNG tests via surefire

Have a local set up using Maven and TestNG which builds just fine. The build is a little odd given that in order for the tests to run, a packaged JAR is needed first. So in effect the local setup runs
#!/bin/bash
mvn clean package -Dmaven.test.skip.exec=true
mvn test
When run on Jenkins, the clean/package step succeeds as does test, except no tests are actually run:
[workspace] $ mvn -f some_sub_directory/pom.xml test
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ...-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) # project ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /var/lib/jenkins/jobs/...
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) # project ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) # project ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) # project ---
[INFO] Not compiling test sources
[INFO]
[INFO] --- maven-surefire-plugin:2.10:test (default-test) # project ---
[INFO] Tests are skipped.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.222s
[INFO] Finished at: Fri Nov 22 18:34:00 UTC 2013
[INFO] Final Memory: 11M/89M
[INFO] ------------------------------------------------------------------------
Finished: SUCCESS
Seems as though the testCompile and test goals in the surefire plugin aren't finding any test classes.
Is there an additional config needed in pom.xml?
The default and recommended path for test classes is {basedir}/src/test/java/.
But you can precise the path in your pom.xml
<build>
<testSourceDirectory>{basedir}/path/to/test/classes</testSourceDirectory>
...
</build>
You need to specify your tests that need to be run. I believe, it looks for tests starting with test*. If you are using a testng xml then you need to set that up. Check this link out for examples on how to specify tests in different ways.

Categories