Showing posts with label Maven. Show all posts
Showing posts with label Maven. Show all posts

Tuesday, 29 July 2014

Install jar with maven in local repository

$ ls
foo.jar
$ mvn install:install-file -Dfile=foo.jar -DgroupId=foo-group -DartifactId=foo-artifact -Dversion=1 -Dpackaging=jar

pom.xml:
<dependency>
   <groupId>foo-group</groupId>
   <artifactId>foo-artifact</artifactId>
   <version>1</version>
</dependency>

Friday, 6 September 2013

How to package all dependencies (jar) of a Maven project (pom.xml) into a folder

Alternative title: Where to find jboss-as-client-5.1.0.GA.jar

How all started: I wanted to access an instance of JBoss 5.1 with RMI using jnp (for >5.1 jnp is not supported!).
Unfortunately the required library jboss-as-client-5.1.0.GA.jar could not be found anywhere.
Even if you look at the JBoss repository
https://repository.jboss.org/nexus/index.html#nexus-search;quick~jboss-as-client you will see that there is a pom.xml
entry for jboss-as-client-5.1.0.GA.jar but you can not download the jar!

The solution:  The pom.xml jboss-as-client-5.1.0.GA.jar actually is a meta-pom. It downloads all the required jars. It doesn't build a jar!
So the following trick worked for me. I created a Maven project and added the jboss-as-client-5.1.0.GA.jar as dependency.
So maven downloaded all the dependencies of the jboss-as-client-5.1.0.GA.jar's pom.xml.
In order to do the same edit your project's pom.xml with the following lines:

<repository>
            <id>JBoss repository 1</id>
            <url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>
</repository>

<dependency>
            <groupId>org.jboss.jbossas</groupId>
            <artifactId>jboss-as-client</artifactId>
            <version>5.1.0.GA</version>
            <type>pom</type>
            <scope>runtime</scope>
</dependency>

How to run project as a jar: I wanted to package my project as jar and run it. By specification a jar cannot contain other jars. A common
solution is using a maven plugin which flattens all files in the dependency jars (i.e. extracts them) and puts them in your jar. I didn't
want this because ..it is ugly. Moreover I wanted to add in my classpath all jars that jboss-as-client-5.1.0.GA.jar's pom.xml downloaded
but there were 173 jars (see listing 1 for all of them in case someone needs them)!

So what I did...I packaged my project as a jar without any jar dependencies. I used the following command to download all dependencies of
jboss-as-client-5.1.0.GA.jar's pom.xml into folder lib_ext.

mvn dependency:copy-dependencies org.apache.maven.plugins:maven-dependency-plugin:2.8:copy-dependencies -f pom.xml -DoutputDirectory=lib_ext

Then I added in my classpath lib_ext/* and lib/* (all the other jar dependencies) and executed my project with!

listing 1: all jboss-as-client-5.1.0.GA.jar's pom.xml dependencies
├───lib_ext
│       activation-1.1.1.jar
│       ant-1.7.0.jar
│       ant-junit-1.7.0.jar
│       ant-launcher-1.7.0.jar
│       antlr-2.7.6.jar
│       avalon-framework-4.1.5.jar
│       bcel-5.1.jar
│       bsh-1.3.0.jar
│       cglib-2.1.3.jar
│       commons-collections-3.1.jar
│       commons-logging-1.1.0.jboss.jar
│       concurrent-1.3.4-jboss-update1.jar
│       dom4j-1.6.1.jar
│       dtdparser121-1.2.1.jar
│       ejb3-persistence-1.0.2.GA.jar
│       getopt-1.0.12-brew.jar
│       hibernate-annotations-3.4.0.GA.jar
│       hibernate-commons-annotations-3.1.0.GA.jar
│       hibernate-core-3.3.0.SP1.jar
│       hibernate-entitymanager-3.4.0.GA.jar
│       jaas-1.0.01.jar
│       jacc-1.0.jar
│       jacorb-2.3.0jboss.patch6-brew.jar
│       javassist-3.10.0.GA.jar
│       jaxb-api-2.1.9-brew.jar
│       jaxws-api-2.1.1.jar
│       jboss-aop-2.1.1.GA-client.jar
│       jboss-aop-2.1.1.GA.jar
│       jboss-aop-asintegration-core-2.1.1.GA.jar
│       jboss-aop-asintegration-jmx-2.1.1.GA.jar
│       jboss-aop-asintegration-mc-2.1.1.GA.jar
│       jboss-aop-aspects-2.1.1.GA.jar
│       jboss-aop-mc-int-2.0.6.GA.jar
│       jboss-as-aspects-5.1.0.GA.jar
│       jboss-as-client-5.1.0.GA.pom
│       jboss-as-cluster-5.1.0.GA-jboss-ha-legacy-client.jar
│       jboss-as-cluster-5.1.0.GA.jar
│       jboss-as-connector-5.1.0.GA.jar
│       jboss-as-deployment-5.1.0.GA.jar
│       jboss-as-ejb3-5.1.0.GA-client.jar
│       jboss-as-iiop-5.1.0.GA-client.jar
│       jboss-as-iiop-5.1.0.GA.jar
│       jboss-as-j2se-5.1.0.GA-tests.jar
│       jboss-as-j2se-5.1.0.GA.jar
│       jboss-as-jmx-5.1.0.GA.jar
│       jboss-as-main-5.1.0.GA-client.jar
│       jboss-as-main-5.1.0.GA.jar
│       jboss-as-management-5.1.0.GA-jsr77-client.jar
│       jboss-as-mbeans-5.1.0.GA.jar
│       jboss-as-profileservice-5.1.0.GA.jar
│       jboss-as-security-5.1.0.GA.jar
│       jboss-as-server-5.1.0.GA-client.jar
│       jboss-as-server-5.1.0.GA-jmx-invoker-adaptor-client.jar
│       jboss-as-server-5.1.0.GA.jar
│       jboss-as-system-5.1.0.GA-client.jar
│       jboss-as-system-5.1.0.GA.jar
│       jboss-as-system-jmx-5.1.0.GA-client.jar
│       jboss-as-system-jmx-5.1.0.GA.jar
│       jboss-bootstrap-1.0.0-Beta-3.jar
│       jboss-classloader-2.0.6.GA.jar
│       jboss-classloading-2.0.6.GA.jar
│       jboss-classloading-spi-5.1.0.GA.jar
│       jboss-classloading-vfs-2.0.6.GA.jar
│       jboss-common-core-2.2.14.GA.jar
│       jboss-corba-ots-spi-5.1.0.GA.jar
│       jboss-current-invocation-aspects-1.0.0.CR1.jar
│       jboss-dependency-2.0.6.GA.jar
│       jboss-deployers-client-2.0.7.GA.jar
│       jboss-deployers-client-spi-2.0.7.GA.jar
│       jboss-deployers-core-2.0.7.GA.jar
│       jboss-deployers-core-spi-2.0.7.GA.jar
│       jboss-deployers-impl-2.0.7.GA.jar
│       jboss-deployers-spi-2.0.7.GA.jar
│       jboss-deployers-structure-spi-2.0.7.GA.jar
│       jboss-deployers-vfs-2.0.7.GA.jar
│       jboss-deployers-vfs-spi-2.0.7.GA.jar
│       jboss-deployment-spi-5.1.0.GA.jar
│       jboss-ejb-api-3.0.0.GA.jar
│       jboss-ejb3-1.1.5.pom
│       jboss-ejb3-as-int-1.1.5.jar
│       jboss-ejb3-cache-1.0.0.jar
│       jboss-ejb3-common-1.0.0-client.jar
│       jboss-ejb3-common-1.0.0.jar
│       jboss-ejb3-core-1.1.5-client.jar
│       jboss-ejb3-core-1.1.5.jar
│       jboss-ejb3-deployers-1.0.0.jar
│       jboss-ejb3-endpoint-0.1.0.jar
│       jboss-ejb3-ext-api-1.0.0.jar
│       jboss-ejb3-ext-api-impl-1.0.0.jar
│       jboss-ejb3-interceptors-1.0.2.jar
│       jboss-ejb3-mc-int-1.0.1.jar
│       jboss-ejb3-metadata-1.0.0.jar
│       jboss-ejb3-proxy-clustered-1.0.1-client.jar
│       jboss-ejb3-proxy-clustered-1.0.1.jar
│       jboss-ejb3-proxy-impl-1.0.2-client.jar
│       jboss-ejb3-proxy-impl-1.0.2.jar
│       jboss-ejb3-proxy-spi-1.0.0-client.jar
│       jboss-ejb3-proxy-spi-1.0.0.jar
│       jboss-ejb3-security-1.0.0-client.jar
│       jboss-ejb3-security-1.0.0.jar
│       jboss-ejb3-timerservice-spi-1.0.0.jar
│       jboss-ejb3-transactions-1.0.0.jar
│       jboss-ha-client-1.1.1.GA.jar
│       jboss-ha-server-api-1.1.1.GA.jar
│       jboss-ha-server-cache-jbc-2.0.0.GA.jar
│       jboss-ha-server-cache-spi-2.0.0.GA.jar
│       jboss-integration-5.1.0.GA.jar
│       jboss-jacc-api-1.1.0.GA_SP1.jar
│       jboss-jad-api-1.2.0.GA.jar
│       jboss-jaspi-api-1.0.0.GA.jar
│       jboss-javaee-5.0.1.GA.jar
│       jboss-jaxws-3.0.1-native-2.0.4.GA.jar
│       jboss-jca-api-1.5.0.GA.jar
│       jboss-jca-spi-5.0.3.GA.jar
│       jboss-jms-api-1.1.0.GA.jar
│       jboss-jpa-deployers-1.0.0.jar
│       jboss-kernel-2.0.6.GA.jar
│       jboss-logbridge-1.0.0.GA.jar
│       jboss-logging-jdk-2.1.0.GA.jar
│       jboss-logging-log4j-2.1.0.GA.jar
│       jboss-logging-spi-2.1.0.GA.jar
│       jboss-logmanager-1.0.0.GA.jar
│       jboss-managed-2.1.0.CR8.jar
│       jboss-mdr-2.0.1.GA.jar
│       jboss-messaging-1.4.3.GA.jar
│       jboss-metadata-1.0.1.GA.jar
│       jboss-metatype-2.1.0.SP1.jar
│       jboss-profiler-jvmti-1.0.0.CR5.jar
│       jboss-profileservice-spi-5.1.0.GA.jar
│       jboss-reflect-2.0.2.GA.jar
│       jboss-remoting-2.5.1.jar
│       jboss-remoting-aspects-1.0.2.jar
│       jboss-security-aspects-1.0.0.GA.jar
│       jboss-security-spi-2.0.3.SP1.jar
│       jboss-serialization-1.0.3.GA.jar
│       jboss-server-manager-1.0.2.GA.jar
│       jboss-test-1.1.4.GA.jar
│       jboss-transaction-api-1.0.1.GA.jar
│       jboss-transaction-aspects-1.0.0.GA.jar
│       jboss-transaction-spi-5.1.0.GA.jar
│       jboss-vfs-2.1.2.GA.jar
│       jbosscache-core-3.1.0.GA.jar
│       jbosssx-2.0.3.SP1.jar
│       jbosssx-client-2.0.3.SP1.jar
│       jbossws-native-jaxrpc-3.0.4.GA.jar
│       jbossws-native-jaxws-3.1.2.GA.jar
│       jbossws-native-saaj-3.1.2.GA.jar
│       jbossws-spi-1.0.3.GA.jar
│       jbossxacml-2.0.3.jar
│       jbossxb-2.0.1.GA.jar
│       jgroups-2.6.10.GA.jar
│       jnp-client-5.0.3.GA.jar
│       jnpserver-5.0.3.GA.jar
│       jpl-pattern-1.0.jar
│       jpl-util-1.0.jar
│       jsr181-api-2.1.1.jar
│       jta-1.1.jar
│       junit-3.8.2.jar
│       log4j-1.2.14.jar
│       mail-1.4.jar
│       pluggable-instrumentor-2.1.1.GA.jar
│       qdox-1.6.1.jar
│       quartz-1.6.0.jar
│       regexp-1.2.jar
│       servlet-api-2.1.1.GA.jar
│       slf4j-api-1.5.6.jar
│       slf4j-jboss-logging-1.0.2.GA.jar
│       stax-api-1.0.jar
│       trove-2.1.1.jar
│       xercesImpl-2.9.1.jar
│       xml-apis-1.0.b2.jar
│       xml-apis-2.9.1.jar
│       xmlsec-1.4.2.jar.



Sunday, 12 February 2012

Maven: how to update all dependendies

$ mvn versions:display-dependency-updates
...
[INFO] The following dependencies in Dependencies have newer versions:
[INFO]   commons-io:commons-io ..................................... 1.4 -> 2.1
[INFO]   commons-lang:commons-lang ................................. 2.5 -> 2.6
[INFO]   javax.mail:mail ................................... 1.4.3 -> 1.4.5-rc1
...

References

plugin versions:display-dependency-updates

Thursday, 24 November 2011

Maven: Attach Source Code + Javadoc in output jar

Maven: Attach Source Code / Javadoc in output jar

<!-- 
	Attach the source to the output jar.
	Execute with "mvn source:jar".
	http://maven.apache.org/plugin-developers/cookbook/attach-source-javadoc-artifacts.html
 -->
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-source-plugin</artifactId>
  <executions>
    <execution>
      <id>attach-sources</id>
      <goals>
        <goal>jar</goal>
      </goals>
    </execution>
  </executions>
</plugin>

<!-- 
	Attach the javadoc to the output jar.
	Execute with "mvn javadoc:jar".
	http://maven.apache.org/plugin-developers/cookbook/attach-source-javadoc-artifacts.html
 -->
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-javadoc-plugin</artifactId>
  <executions>
    <execution>
      <id>attach-javadocs</id>
      <goals>
        <goal>jar</goal>
      </goals>
    </execution>
  </executions>
</plugin>
Execute "mvn install" to place the output jars in the local repository (default: ~/.m2/repository)

Apache

Wednesday, 23 November 2011

Eclipse+Maven: What if a project depends from another project?

Update on 24 Nov 2011: Unfortunately it seems that every time I change A I have to execute the cmd "mvn install" on A and refresh B to see the changes....any ideas?

Assume Project B needs Project A to compile and execute... We want whenever we modify code in A then B to get updated...An easy solution would be to add the jar of A in WEB-INF/lib of B but every time we changed A we would need a manual "mvn package".

Senario: B depends on A

Assuming the pom.xml of A is:

<project ...
 <groupId>CORE</groupId>
 <artifactId>CORE</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>jar</packaging>
 <name>CORE</name>
...
</project>

install A on local repository:

on A: mvn clean install

Add a as dependency on B's pom.xml:

<dependency>
 <groupId>CORE</groupId>
 <artifactId>CORE</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <scope>compile</scope>
</dependency>

updates B's Eclipse project configurations (i.e. .classpath):

$ mvn eclipse:eclipse

[INFO] B's .classpath after 'mvn eclipse:eclipse':

<classpath>
  <classpathentry kind="src" path="src/main/java"/>
  <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
  <classpathentry kind="output" path="target/classes"/>
  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
  <classpathentry kind="var" path="M2_REPO/com/maventest/mytest/1.0-SNAPSHOT/mytest-1.0-SNAPSHOT.jar"/>
  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
</classpath>
The above .classpath has been taken from the references...

[TROUBLESHOOTING] If you get in Eclipse the error "Classpath entry ... jar will not be exported or published. Runtime ClassNotFoundExceptions may result."

On Eclipse right click on project B > Java Build Path > Order and Export > select all!

Also check Java Build Path > Libraries and

Deployment Assembly

[TROUBLESHOOTING] If you the in Eclipse the error "implementation of version 6.0 of project facet"

edit .settings/org.eclipse.wst.common.project.facet.ccore.xml (assuming you use Tomcat 7.0):
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <runtime name="Apache Tomcat v7.0"/>
  <fixed facet="jst.web"/>
  <fixed facet="wst.jsdt.web"/>
  <fixed facet="java"/>
  <installed facet="jst.web" version="3.0"/>
  <installed facet="wst.jsdt.web" version="1.0"/>
  <installed facet="jst.jsf" version="2.0"/>
  <installed facet="java" version="1.6"/>
</faceted-project>

[TROUBLESHOOTING] If you get the error that the MANIFEST.MF is not found...

Edit pom.xml in orer the build process to create the MANIFEST.MF (it must exist - see wikipedia):

   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.3.1</version>
    <!-- <configuration> -->
    <!-- <useDefaultManifestFile>true</useDefaultManifestFile> -->
    <!-- </configuration> -->
    <configuration>
     <archive>
      <index>true</index>
      <manifest>
       <addClasspath>true</addClasspath>
      </manifest>
      <manifestEntries>
       <mode>development</mode>
       <url>${pom.url}</url>
       <key>value</key>
      </manifestEntries>
     </archive>
    </configuration>
   </plugin>

References:

Maven: skip tests

skip tests compilation+execution:
-Dmaven.test.skip=true
skip tests execution:
-DskipTests=true

Friday, 4 November 2011

Maven: download dependency sources/javadoc

download dependency javadoc:
mvn dependency:resolve -Dclassifier=javadoc
download dependency source:
mvn dependency:resolve -Dclassifier=sources
or
mvn dependency:sources

Wednesday, 2 November 2011

Eclipse/Maven error: "Dynamic Web Module 3.0 requires Java 1.6 or newer. "

solution Add in pom.xml
 <build>
  <plugins>

   <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.0.2</version>
    <configuration>
     <source>1.6</source>
     <target>1.6</target>
    </configuration>
   </plugin>

  </plugins>
 </build>

Thursday, 28 April 2011

What if my project depends on foo.jar but foo.jar is not included on any repository? [Maven]


What if my project depends on foo.jar but foo.jar is not included on any repository? Then create you local repository and add the dependency on the project's pom.xml


Friday, 22 April 2011

install Maven (m2eclipse) on Eclipse

From Marketplace install "Maven Integration for Eclipse"

Maven: run only a JUnit test

Run a JUnit test class

//this is a Spring Test - it can be any JUnit test
@RunWith(SpringJUnit4ClassRunner.class)
public class FooTest {

@Test
public void foo1() {
//...
}
$ mvn -Dtest="FooTest" test

Run a JUnit test class method

$ mvn -Dtest=FooTest#foo1 test

References

http://maven.apache.org/plugins/maven-surefire-plugin/examples/single-test.html