user2617611 user2617611 - 27 days ago 8
Java Question

server is not refering to my dependency jar from my war but when I place the same jar in the server lib it works fine

I am working on a java webapplication in Netbeans8.0 IDE, apache-tomcat server.

I have three projects one of which has the parent pom.xml and the other two have their own POM.xml
This application has legacy code and in the runtime it references the ojdbc6 jars from the server lib. Now the management wants us to move all the dependency jars to the war's Web-Inf/lib

We have the jars downloaded in our local folder of the application, but for some reason, it is not getting referenced from the Web-INF when I moved them to the pom.xml, I thought that I may be wrong with the group and artifactID. So I am directly referring it from codeIds maven repository, Now I have two issues
1. I see this jar in the Web-Inf only if I build with dependency
2. after seeing it in the Web-Inf, when I debug or run it I am getting ojdbc-driver exception in the runtime.

But when I move the same jar to server/lib it works fine.

I spent almost this whole week to resolve this issue with the help of many documents from the internet but no luck.

My pom.xml parent

<?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/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>portalsGroupId.portals</groupId>
<artifactId>matrix</artifactId>
<name>matrix</name>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

<url>http://www.8x8.com</url>

<parent>
<groupId>portalsGroupId</groupId>
<artifactId>portals</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>

<repositories>
<repository>
<id>codelds</id>
<url>https://code.lds.org/nexus/content/groups/main-repo</url>
</repository>
<repository>
<id>jboss-public-repository-group</id>
<name>Jboss Repository for Maven</name>
<url><http://repository.jboss.org/nexus/content/groups /public></url>
</repository>

<repository>
<id>jboss</id>
<name>Jboss</name>
<url>http://repository.jboss.com/maven2/</url>
</repository>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>jboss-public-repository-group</id>
<name>JBoss Public Maven Repository Group</name>
<url>http://8x8.com/nexus/content/groups/public-jboss/</url>
<layout>default</layout>
<releases>
<enabled>false</enabled>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
<updatePolicy>never</updatePolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.richfaces.bom.version>4.0.0.Final</org.richfaces.bom.version>
<slf4j.version>1.5.6</slf4j.version>
<jsf.version>2.1.2</jsf.version>
<ssputil.version>1.0-SNAPSHOT</ssputil.version>
<sspapi.version>1.0-SNAPSHOT</sspapi.version>
<oltu.version>1.0.0</oltu.version>
</properties>

<build>
<finalName>matrix-${project.version}</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1-alpha-2</version>
<configuration>
<webResources>
<resource>
<directory>${basedir}/src/main/java</directory>
<targetPath>/WEB-INF/src</targetPath>
</resource>
</webResources>
<webResources>
<resource>
<directory>${basedir}/../ext_lib/cloud/</directory>
<targetPath>/WEB-INF/lib</targetPath>
</resource>
<resource>
<directory>${basedir}/../ext_lib/commons-net/</directory>
<targetPath>/WEB-INF/lib</targetPath>
</resource>
<resource>
<directory>${basedir}/src/main/java/com/_8x8/matrix/skin/</directory>
<targetPath>/WEB-INF/classes</targetPath>
</resource>
<resource>
<directory>${basedir}/../ext_lib/httpclient431/</directory>
<targetPath>/WEB-INF/lib</targetPath>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>

<profiles>
<profile>
<id>jee6</id>
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webappDirectory>${project.build.directory}/${project.build.finalName}-jee6</webappDirectory>
<packagingExcludes>WEB-INF/lib/jsf-api*,WEB-INF/lib/jsf-impl*,WEB-INF/lib/jstl*</packagingExcludes>
<warSourceExcludes>WEB-INF/lib/jsf-api*,WEB-INF/lib/jsf-impl*,WEB-INF/lib/jstl*</warSourceExcludes>
</configuration>
</plugin>
</plugins>
</build>


<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.richfaces</groupId>
<artifactId>richfaces-bom</artifactId>
<version>${org.richfaces.bom.version}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<dependency>
<groupId>org.richfaces.ui</groupId>
<artifactId>richfaces-components-ui</artifactId>
</dependency>
<dependency>
<groupId>org.richfaces.core</groupId>
<artifactId>richfaces-core-impl</artifactId>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.oltu.oauth2</groupId>
<artifactId>org.apache.oltu.oauth2.client</artifactId>
<version>${oltu.version}</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
</profile>
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<executions>
<execution>
<id>jee6</id>
<phase>package</phase>
<goals>
<goal>war</goal>
</goals>
<configuration>
<webappDirectory>${project.build.directory}/${project.build.finalName}-jee6</webappDirectory>
<classifier>jee6</classifier>
<packagingExcludes>WEB-INF/lib/jsf-api*,WEB-INF/lib/jsf-impl*,WEB-INF/lib/jstl*</packagingExcludes>
<warSourceExcludes>WEB-INF/lib/jsf-api*,WEB-INF/lib/jsf-impl*,WEB-INF/lib/jstl*</warSourceExcludes>
</configuration>
</execution>
</executions>
<configuration>
<webResources>
<resource>
<directory>${basedir}/src/main/java</directory>
<targetPath>/WEB-INF/src</targetPath>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>matrix_ssp_api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.richfaces</groupId>
<artifactId>richfaces-bom</artifactId>
<version>${org.richfaces.bom.version}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>${jsf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
<version>7.0.19</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
<type>jar</type>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<dependency>
<groupId>org.richfaces.ui</groupId>
<artifactId>richfaces-components-ui</artifactId>
<version>${org.richfaces.bom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.oltu.oauth2</groupId>
<artifactId>org.apache.oltu.oauth2.client</artifactId>
<version>${oltu.version}</version>
</dependency>
<dependency>
<groupId>org.richfaces.core</groupId>
<artifactId>richfaces-core-impl</artifactId>
<version>${org.richfaces.bom.version}</version>
</dependency>
<dependency>
<groupId>org.richfaces.cdk</groupId>
<artifactId>annotations</artifactId>
<scope>provided</scope>
<version>${org.richfaces.bom.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<!--scope>provided</scope-->
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<version>2.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>el-impl</artifactId>
<version>2.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>

<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
</dependency>

<!-- Local Project Dependency -->
<dependency>
<groupId>portalsGroupId.portals</groupId>
<artifactId>matrix_ssp_util</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>com._8x8.matrix</groupId>
<artifactId>matrix_httpClient401_cmncodec</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>portalsGroupId.portals</groupId>
<artifactId>matrix_ssp_api</artifactId>
<exclusions>
<exclusion>
<groupId>com._8x8.matrix</groupId>
<artifactId>matrix_httpClient401_cmncodec</artifactId>
</exclusion>
</exclusions>
<version>1.0-SNAPSHOT</version>
</dependency>

<dependency>
<groupId>portalsGroupId.portals</groupId>
<artifactId>matrix_cloud_commons</artifactId>
<scope>system</scope>
<version>1.0-SNAPSHOT</version>
<systemPath>${project.basedir}/../ext_lib/cloud/cloud_commons.jar</systemPath>
</dependency>
<dependency>
<groupId>portalsGroupId.portals</groupId>
<artifactId>matrix_cloud_client</artifactId>
<scope>system</scope>
<version>1.0-SNAPSHOT</version>
<systemPath>${project.basedir}/../ext_lib/cloud/cloud_client.jar</systemPath>
</dependency>

<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<scope>system</scope>
<version>1.0-SNAPSHOT</version>
<systemPath>${project.basedir}/../ext_lib/commons-net/commons-net-3.0.1.jar</systemPath>
</dependency>

<dependency>
<groupId>sims</groupId>
<artifactId>sims</artifactId>
<scope>system</scope>
<version>1.0-SNAPSHOT</version>
<systemPath>${project.basedir}/../ext_lib/sims/sims-connector.jar</systemPath>
</dependency>

<dependency>
<groupId>jlayer</groupId>
<artifactId>jlayer</artifactId>
<scope>system</scope>
<version>1.0-SNAPSHOT</version>
<systemPath>${project.basedir}/../ext_lib/jlayer/jl1.0.1.jar</systemPath>
</dependency>

<dependency>
<groupId>cdirector</groupId>
<artifactId>cdirector</artifactId>
<scope>system</scope>
<version>1.0-SNAPSHOT</version>
<systemPath>${project.basedir}/../ext_lib/chartdirector/ChartDirector.jar</systemPath>
</dependency>

<dependency>
<groupId>gson</groupId>
<artifactId>gson222</artifactId>
<scope>system</scope>
<version>1.0-SNAPSHOT</version>
<systemPath>${project.basedir}/../ext_lib/gson/google-gson-2.2.2/gson-2.2.2.jar</systemPath>
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.5</version>
</dependency>
<dependency>
<groupId>org.codehaus.jettison</groupId>
<artifactId>jettison</artifactId>
<version>1.3.4</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.1</version>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
<type>jar</type>
</dependency>
</dependencies>
</project>

Answer Source

Just downloading a jar and putting it to the project folder is not the "maven way"...

If you want to use a library which is not in the central repo you have either to put it in your local repo or use another remote repo. If I understood correctly you have choosen to use the code.lds.org repo. What I can't see in your pom is the (real) dependency. There is only the dependency management for the ojdbc6.

You have to add this to you <dependencies> section and run mvn package (or in Netbeans build) and the ojdbc6 jar should be packaged into the war.

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
</dependency>

(Version is skipped here, because it is already defined in the <dependencyManagement>; <type>jar</type> is not needed because its the default...)

You could also look at this question, maybe there are some more/other informations: Oracle JDBC ojdbc6 Jar as a Maven Dependency