You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by Matt Whiteman <mw...@purelandsupply.com> on 2014/05/30 22:39:13 UTC

Unmanaged dependency question

Hi,

 

This has probably been answered before, but I haven't been able to find the
answer and I'm hoping someone knows.

 

I'm writing several apps that talk to a Microsoft SQL database, so I'm using
the Hibernate dependency. Since Microsoft doesn't make the sqljdbc4 jar
available on Maven, I've downloaded it, and I'm trying to make it an
unmanaged dependency in its own standalone project so that I can simply
reference it in other projects' pom files without having to deploy the jar
to each one individually.

 

I've followed the instructions for deploying an unmanaged dependency. As I
am the only developer at my company (at this time), I do not have a separate
Maven server setup. I was hoping to simply deploy the dependency and then
run 'maven install' so that it copies everything needed into my .m2 folder.
This is my directory setup:

 

(This is the project directory for the sqljdbc4 unmanaged dependency)

C:\dev\Github-repos\addons\sqljdbc4

  +- pom.xml

  +-src

  +-repo

 

I followed the instructions to use mvn deploy on the local sqljdbc4.jar
file. I am using an artifactId of sqljdbc4, version 4.0, groupId of
com.microsoft.sqlserver. After deployment, the repo directory does appear to
be correctly populated:

 

C:\dev\Github-repos\addons\sqljdbc4

  +- pom.xml

  +-src

  +-repo

       +-com

           +-microsoft

                  +-sqlserver

                       +-sqljdbc4

                                +-maven-metadata

                                +-4.0

                                      +-sqljdbc4-4.0.jar

                                      +-sqljdbc4-4.0.pom

 

Next, following the instructions, I go back into the pom.xml file and add
the repository tag, so my pom.xml for this now looks like:

 

<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.microsoft.sqlserver</groupId>

  <artifactId>sqljdbc4</artifactId>

  <version>4.0</version>

  

<repositories>

    <!--other repositories if any-->

    <repository>

        <id>project.local</id>

        <name>project</name>

        <url>file:${project.basedir}/repo</url>

    </repository>

</repositories>

</project>

 

 

Now, here is the problem. Since I want to use this as a dependency in other
projects, I am trying to run 'maven install' so that it will push everything
into my .m2 directory. The maven build is a success. However, the resulting
sqljdbc4.jar file in the target directory and up in the m2 directory is only
2kb (whereas the original jar file is 571kb, none of the content made it
in). As a result, projects that use this as a dependency build, but then
throw a ClassNotFoundException at runtime, because the classes aren't there.

 

I am building a separate project that uses this as a dependency:

 

C:\dev\Github-repos\applications\myapp

 

The pom.xml for this project uses the dependency correctly:

<dependency>

                <groupId>com.microsoft.sqlserver</groupId>

                <artifactId>sqljdbc4</artifactId>

                <version>4.0</version>

</dependency>

 

I'm even using the maven assembly plugin to ensure a jar is built with all
dependencies packaged in:

 

                    <plugin>

 
<artifactId>maven-assembly-plugin</artifactId>

                                  <configuration>

                                                <descriptorRefs>

 
<descriptorRef>jar-with-dependencies</descriptorRef>

                                                </descriptorRefs>

                                    <archive>

                                      <manifest>

                                        <addClasspath>true</addClasspath>

 
<mainClass>productfeeds.main.ProductFeedDriver</mainClass>

                                      </manifest>

                                    </archive>

                                  </configuration>

        <executions>

          <execution>

            <phase>package</phase>

            <goals>

              <goal>single</goal>

            </goals>

          </execution>

        </executions>

                                </plugin>

 

 

Any ideas what I'm doing wrong? I'm sure it's something really simple I've
overlooked. If I don't make this a standalone dependency, and simply use
'mvn install:install-file -Dfile=sqljdbc4.jar
-DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0
-Dpackaging=jar ', then everything works fine.

 

Thanks,

 

Matt

 


Re: Unmanaged dependency question

Posted by Matt Whiteman <mw...@purelandsupply.com>.
Er hrm, I'm not sure why this sent again, but ignore it. Question already
answered, thanks!

Matt

On May 30, 2014 at 4:39 PM Matt Whiteman <mw...@purelandsupply.com> wrote:
> Hi,
>
>
>
> This has probably been answered before, but I haven't been able to find the
> answer and I'm hoping someone knows.
>
>
>
> I'm writing several apps that talk to a Microsoft SQL database, so I'm using
> the Hibernate dependency. Since Microsoft doesn't make the sqljdbc4 jar
> available on Maven, I've downloaded it, and I'm trying to make it an
> unmanaged dependency in its own standalone project so that I can simply
> reference it in other projects' pom files without having to deploy the jar
> to each one individually.
>
>
>
> I've followed the instructions for deploying an unmanaged dependency. As I
> am the only developer at my company (at this time), I do not have a separate
> Maven server setup. I was hoping to simply deploy the dependency and then
> run 'maven install' so that it copies everything needed into my .m2 folder.
> This is my directory setup:
>
>
>
> (This is the project directory for the sqljdbc4 unmanaged dependency)
>
> C:\dev\Github-repos\addons\sqljdbc4
>
> +- pom.xml
>
> +-src
>
> +-repo
>
>
>
> I followed the instructions to use mvn deploy on the local sqljdbc4.jar
> file. I am using an artifactId of sqljdbc4, version 4.0, groupId of
> com.microsoft.sqlserver. After deployment, the repo directory does appear to
> be correctly populated:
>
>
>
> C:\dev\Github-repos\addons\sqljdbc4
>
> +- pom.xml
>
> +-src
>
> +-repo
>
> +-com
>
> +-microsoft
>
> +-sqlserver
>
> +-sqljdbc4
>
> +-maven-metadata
>
> +-4.0
>
> +-sqljdbc4-4.0.jar
>
> +-sqljdbc4-4.0.pom
>
>
>
> Next, following the instructions, I go back into the pom.xml file and add
> the repository tag, so my pom.xml for this now looks like:
>
>
>
> <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.microsoft.sqlserver</groupId>
>
> <artifactId>sqljdbc4</artifactId>
>
> <version>4.0</version>
>
>
>
> <repositories>
>
> <!--other repositories if any-->
>
> <repository>
>
> <id>project.local</id>
>
> <name>project</name>
>
> <url>file:${project.basedir}/repo</url>
>
> </repository>
>
> </repositories>
>
> </project>
>
>
>
>
>
> Now, here is the problem. Since I want to use this as a dependency in other
> projects, I am trying to run 'maven install' so that it will push everything
> into my .m2 directory. The maven build is a success. However, the resulting
> sqljdbc4.jar file in the target directory and up in the m2 directory is only
> 2kb (whereas the original jar file is 571kb, none of the content made it
> in). As a result, projects that use this as a dependency build, but then
> throw a ClassNotFoundException at runtime, because the classes aren't there.
>
>
>
> I am building a separate project that uses this as a dependency:
>
>
>
> C:\dev\Github-repos\applications\myapp
>
>
>
> The pom.xml for this project uses the dependency correctly:
>
> <dependency>
>
> <groupId>com.microsoft.sqlserver</groupId>
>
> <artifactId>sqljdbc4</artifactId>
>
> <version>4.0</version>
>
> </dependency>
>
>
>
> I'm even using the maven assembly plugin to ensure a jar is built with all
> dependencies packaged in:
>
>
>
> <plugin>
>
>
> <artifactId>maven-assembly-plugin</artifactId>
>
> <configuration>
>
> <descriptorRefs>
>
>
> <descriptorRef>jar-with-dependencies</descriptorRef>
>
> </descriptorRefs>
>
> <archive>
>
> <manifest>
>
> <addClasspath>true</addClasspath>
>
>
> <mainClass>productfeeds.main.ProductFeedDriver</mainClass>
>
> </manifest>
>
> </archive>
>
> </configuration>
>
> <executions>
>
> <execution>
>
> <phase>package</phase>
>
> <goals>
>
> <goal>single</goal>
>
> </goals>
>
> </execution>
>
> </executions>
>
> </plugin>
>
>
>
>
>
> Any ideas what I'm doing wrong? I'm sure it's something really simple I've
> overlooked. If I don't make this a standalone dependency, and simply use
> 'mvn install:install-file -Dfile=sqljdbc4.jar
> -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0
> -Dpackaging=jar ', then everything works fine.
>
>
>
> Thanks,
>
>
>
> Matt
>
>
>