Maven Dependencies

Available Repository Managers

Reference: https://maven.apache.org/repository-management.html

  • Apache Archiva (open source)
  • JFrog Artifactory Open Source (open source)
  • JFrog Artifactory Pro (commercial)
  • Sonatype Nexus OSS (open source)
  • Sonatype Nexus Pro (commercial)

The usage of Repository Manager is considered an best practice for maven. It is a server application for proxy server of public Maven repository and deployment destination.

Local Repository

Default path: ${USER_HOME}/.m2/repository

<settings>
...
  <localRepository></localRepository>
...
</settings>

Deployment Setting

<settings>
  <servers>
    <id>
    <username>
    <password>
  </servers>
</settings>

Proxy Setting

In ${USER_HOME}/.m2/setting.xml

<settings>
  ...
  <proxies>
    <proxy>
      <id></id>
      <active></active>
      <protocol><protocol>
      <host></host>
      <port></port>
      <username></username>
      <password></password>
      <nonProxyHosts><nonProxyHosts>
    </proxy>
  </proxies>
  ...
</settings>

Simple Spring Security Web Application Example – web.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:security="http://www.springframework.org/schema/security"
 xsi:schemaLocation="
 http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context.xsd
 http://www.springframework.org/schema/security
 http://www.springframework.org/schema/security/spring-security.xsd">

 <context:component-scan base-package="com.ittechoffice.example.controller" />

 <!-- Spring MVC Config -->
 
 <!-- Add support of JSP -->
 <bean
 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
 <property name="prefix" value="/WEB-INF/jsp/" />
 <property name="suffix" value=".jsp" />
 </bean>
 
 <!-- Spring Security Config -->
 <security:http auto-config="true">
 <!-- P.S. "**" means zero or more directories in the path -->
 <security:intercept-url pattern="/**" access="hasAuthority('ADMIN')"/>
 </security:http>
 
 <security:authentication-manager>
 <security:authentication-provider>
 <security:user-service>
 <security:user name="user" password="password" authorities="ADMIN"/>
 </security:user-service>
 </security:authentication-provider>
 </security:authentication-manager>

</beans>

 

Simple Spring Security Web Application Example – POM.xml

<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.ittechoffice</groupId>
 <artifactId>ItTechOfficeSpringSecurityWebExample</artifactId>
 <version>0.0.1-SNAPSHOT</version>

 <properties>
 <spring.version>4.0.1.RELEASE</spring.version>
 </properties>

 <dependencies>

 <!-- Spring Core Container -->
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-context</artifactId>
 <version>${spring.version}</version>
 </dependency>

 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-core</artifactId>
 <version>${spring.version}</version>
 </dependency>

 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-beans</artifactId>
 <version>${spring.version}</version>
 </dependency>

 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-context-support</artifactId>
 <version>${spring.version}</version>
 </dependency>

 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-expression</artifactId>
 <version>${spring.version}</version>
 </dependency>

 <!-- Spring MVC -->
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-web</artifactId>
 <version>${spring.version}</version>
 </dependency>

 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-webmvc</artifactId>
 <version>${spring.version}</version>
 </dependency>

 <!-- Spring Security -->
 <dependency>
 <groupId>org.springframework.security</groupId>
 <artifactId>spring-security-core</artifactId>
 <version>${spring.version}</version>
 </dependency>

 <dependency>
 <groupId>org.springframework.security</groupId>
 <artifactId>spring-security-config</artifactId>
 <version>${spring.version}</version>
 </dependency>

 <dependency>
 <groupId>org.springframework.security</groupId>
 <artifactId>spring-security-web</artifactId>
 <version>${spring.version}</version>
 </dependency>

 </dependencies>
</project>

Maven Dependency Tree

  • mvn dependency:tree

 

pom.xml

<project xmlns=http://maven.apache.org/POM/4.0.0&#8243; 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.ittechoffice</groupId>

<artifactId>HelloWorld-Selenium</artifactId>

<version>0.0.1-SNAPSHOT</version>

<repositories>

    <repository>

      <id>JBoss repository</id>

      <url>http://repository.jboss.com/maven2/</url>

    </repository>

     <repository>

  <id>Java.Net</id>

  <url>http://download.java.net/maven/2/</url>

  </repository>

  </repositories>

<dependencies>

<dependency>

<groupId>org.seleniumhq.selenium</groupId>

<artifactId>selenium-java</artifactId>

<version>2.53.0</version>

</dependency>

<dependency>

<groupId>org.seleniumhq.selenium</groupId>

<artifactId>htmlunit-driver</artifactId>

<version>2.20</version>

</dependency>

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-math3</artifactId>

<version>3.2</version>

</dependency>

<!– H2 database –>

<dependency>

    <groupId>com.h2database</groupId>

    <artifactId>h2</artifactId>

    <version>1.4.191</version>

</dependency>

<!– MySQL database driver –>

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.9</version>

</dependency>

<!– Hibernate core –>

<dependency>

<groupId>hibernate</groupId>

<artifactId>hibernate3</artifactId>

<version>3.2.3.GA</version>

</dependency>

<!– Hibernate annotation –>

<dependency>

<groupId>hibernate-annotations</groupId>

<artifactId>hibernate-annotations</artifactId>

<version>3.3.0.GA</version>

</dependency>

<dependency>

<groupId>hibernate-commons-annotations</groupId>

<artifactId>hibernate-commons-annotations</artifactId>

<version>3.0.0.GA</version>

</dependency>

<!– Hibernate library dependecy start –>

<dependency>

<groupId>dom4j</groupId>

<artifactId>dom4j</artifactId>

<version>1.6.1</version>

<exclusions>

        <exclusion>

            <artifactId>xmlapis</artifactId>

            <groupId>xmlapis</groupId>

        </exclusion>        

    </exclusions>

</dependency>

<dependency>

<groupId>commons-logging</groupId>

<artifactId>commons-logging</artifactId>

<version>1.1.1</version>

</dependency>

<dependency>

<groupId>commons-collections</groupId>

<artifactId>commons-collections</artifactId>

<version>3.2.1</version>

</dependency>

<dependency>

<groupId>cglib</groupId>

<artifactId>cglib</artifactId>

<version>2.2</version>

</dependency>

<!– Hibernate library dependecy end –>

<dependency>

<groupId>javax.transaction</groupId>

<artifactId>jta</artifactId>

<version>1.1</version>

</dependency>

    <!– Javaee API –>

<dependency>

    <groupId>javax</groupId>

    <artifactId>javaeeapi</artifactId>

    <version>6.0</version>

</dependency>

</dependencies>

</project>

Maven Problem when Company Firewall Blocks Connection

Even if you can use browser to connect to central repository, https://repo1.maven.org/maven2/, your maven may be able to connect it.

Detect your proxy setting by Command Line in Window:

netsh winhttp show proxy

It would show your PC’s proxy information.

Configure your Maven Setting (in ${USER_HOME}/.m2/settting.xml)

<settings>
  ...
  <proxies>
    <proxy>
      <active>true</active>
      <protocol>http</protocol>
      <host>${Specify in PROXY INFO}</host>
      <port>${Specify in PROXY INFO}</port>
      <username></username>
      <password></password>
      <nonProxyHosts></nonProxyHosts>
    </proxy>
  </proxies>
  ...
</settings>

 

 

Maven Conflict of Dom4j/Hibernate and Selenium

pom.xml

<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.ittechoffice</groupId>

<artifactId>HelloWorld-Selenium</artifactId>

<version>0.0.1-SNAPSHOT</version>

<repositories>

     <repository>

        <id>JBoss repository</id>

        <url>http://repository.jboss.com/maven2/</url>

     </repository>

      <repository>

     <id>Java.Net</id>

     <url>http://download.java.net/maven/2/</url>

    </repository>

   </repositories>

<dependencies>

<dependency>

<groupId>org.seleniumhq.selenium</groupId>

<artifactId>selenium-java</artifactId>

<version>2.53.0</version>

</dependency>

<dependency>

<groupId>org.seleniumhq.selenium</groupId>

<artifactId>htmlunit-driver</artifactId>

<version>2.20</version>

</dependency>

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-math3</artifactId>

<version>3.2</version>

</dependency>

<!-- H2 database -->

<dependency>

    <groupId>com.h2database</groupId>

      <artifactId>h2</artifactId>

      <version>1.4.191</version>

</dependency>

<!-- MySQL database driver -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.9</version>

</dependency>

<!-- Hibernate core -->

<dependency>

<groupId>hibernate</groupId>

<artifactId>hibernate3</artifactId>

<version>3.2.3.GA</version>

</dependency>

<!-- Hibernate annotation -->

<dependency>

<groupId>hibernate-annotations</groupId>

<artifactId>hibernate-annotations</artifactId>

<version>3.3.0.GA</version>

</dependency>

<dependency>

<groupId>hibernate-commons-annotations</groupId>

<artifactId>hibernate-commons-annotations</artifactId>

<version>3.0.0.GA</version>

</dependency>

<!-- Hibernate library dependecy start -->

<dependency>

<groupId>dom4j</groupId>

<artifactId>dom4j</artifactId>

<version>1.6.1</version>

</dependency>

<dependency>

<groupId>commons-logging</groupId>

<artifactId>commons-logging</artifactId>

<version>1.1.1</version>

</dependency>

<dependency>

<groupId>commons-collections</groupId>

<artifactId>commons-collections</artifactId>

<version>3.2.1</version>

</dependency>

<dependency>

<groupId>cglib</groupId>

<artifactId>cglib</artifactId>

<version>2.2</version>

</dependency>

<!-- Hibernate library dependecy end -->

<dependency>

<groupId>javax.transaction</groupId>

<artifactId>jta</artifactId>

<version>1.1</version>

</dependency>

      <!-- Javaee API -->

<dependency>

      <groupId>javax</groupId>

      <artifactId>javaee-api</artifactId>

      <version>6.0</version>

</dependency>

</dependencies>

</project>

 

Solution

<dependency>

<groupId>dom4j</groupId>

<artifactId>dom4j</artifactId>

<version>1.6.1</version>

<exclusions>

        <exclusion>

            <artifactId>xml-apis</artifactId>

            <groupId>xml-apis</groupId>

        </exclusion>        

      </exclusions>

</dependency>