maven-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Eggers <its_toas...@yahoo.com.INVALID>
Subject Re: Why isn't maven-dependency-plugin copying my artifacts anymore?
Date Fri, 11 Mar 2016 06:10:11 GMT
David,

Are you perhaps running this inside Eclipse?

If so, do you have the m2e-connector for maven-dependency-plugin installed?

Can you run mvn package from the command line if you're only packaging
this from Eclipse?

I have run my project from Eclipse Mars.1, but I have the m2e-connector
installed. Copying and packaging work as expected.

. . . just my two cents
/mde/

On 3/10/2016 9:05 PM, David Karr wrote:
> Ok. Could you remove the jars and then run it again?
> 
> On Thu, Mar 10, 2016, 20:58 Uwe Barthel <barthel@x-reizend.de> wrote:
> 
>> Hi David,
>>
>> I use your pom.xml (but removed parent and org.opendaylight dependencies)
>> and it works well with:
>>
>> Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5;
>> 2015-11-10T17:41:47+01:00)
>> Maven home: /usr/local/Cellar/maven/3.3.9/libexec
>> Java version: 1.8.0_31, vendor: Oracle Corporation
>> Java home:
>> /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre
>> Default locale: en_US, platform encoding: UTF-8
>> OS name: "mac os x", version: "10.11.3", arch: "x86_64", family: “mac"
>>
>> $ ls -1 libs/
>> antlr4-runtime-4.0.jar
>> mapdb-1.0.4.jar
>>
>> --
>> barthel@x-reizend.de
>>
>>
>>> On 11 Mar 2016, at 01:03, David M. Karr <davidmichaelkarr@gmail.com>
>> wrote:
>>>
>>> On 03/10/2016 03:54 PM, Mark Eggers wrote:
>>>> David,
>>>>
>>>> I just upgraded to 3.3.9, and ran the following on one of my projects
>>>> (twice):
>>>>
>>>> mvn clean package
>>>>
>>>> In both cases the JAR files were copied to my output directory and
>>>> included in both the zip and tar.gz files.
>>>>
>>>> I guess a little more information is needed??
>>>
>>> Ok.  Following this is the entire pom.xml file in question.  Two of the
>> artifacts aren't on MavenCentral, but the example could easily be
>> simplified to not specify those.
>>>
>>> ------------------------------
>>> <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>
>>>
>>>  <parent>
>>>    <groupId>com.cisco.yangide</groupId>
>>>    <artifactId>com.cisco.yangide.parent</artifactId>
>>>    <version>1.1.1-SNAPSHOT</version>
>>>    <relativePath>../..</relativePath>
>>>  </parent>
>>>
>>>  <artifactId>com.cisco.yangide.core</artifactId>
>>>  <packaging>eclipse-plugin</packaging>
>>>  <version>1.1.1-SNAPSHOT</version>
>>>  <build>
>>>    <sourceDirectory>src</sourceDirectory>
>>>    <plugins>
>>>        <plugin>
>>>            <groupId>org.apache.maven.plugins</groupId>
>>>            <artifactId>maven-clean-plugin</artifactId>
>>>            <configuration>
>>>                <filesets>
>>>                    <fileset>
>>>                        <directory>libs</directory>
>>>                    </fileset>
>>>                </filesets>
>>>            </configuration>
>>>        </plugin>
>>>        <plugin>
>>>            <groupId>org.apache.maven.plugins</groupId>
>>> <artifactId>maven-dependency-plugin</artifactId>
>>>            <version>2.10</version>
>>>            <executions>
>>>                <execution>
>>>                    <id>copy</id>
>>>                    <phase>prepare-package</phase>
>>>                    <goals>
>>>                        <goal>copy</goal>
>>>                    </goals>
>>>                    <configuration>
>>> <outputDirectory>libs</outputDirectory>
>>>                        <artifactItems>
>>>                            <artifactItem>
>>> <groupId>org.antlr</groupId>
>>> <artifactId>antlr4-runtime</artifactId>
>>>                                <version>4.0</version>
>>>                                <type>jar</type>
>>> <overWrite>true</overWrite>
>>> <destFileName>antlr4-runtime-4.0.jar</destFileName>
>>>                            </artifactItem>
>>>                            <artifactItem>
>>> <groupId>org.mapdb</groupId>
>>> <artifactId>mapdb</artifactId>
>>>                                <version>1.0.4</version>
>>>                                <type>jar</type>
>>> <overWrite>true</overWrite>
>>> <destFileName>mapdb-1.0.4.jar</destFileName>
>>>                            </artifactItem>
>>>                            <artifactItem>
>>> <groupId>org.opendaylight.yangtools</groupId>
>>> <artifactId>yang-model-api</artifactId>
>>>                                <version>0.6.1</version>
>>>                                <type>jar</type>
>>> <overWrite>true</overWrite>
>>> <destFileName>yang-model-api-0.6.1.jar</destFileName>
>>>                            </artifactItem>
>>>                            <artifactItem>
>>> <groupId>org.opendaylight.yangtools</groupId>
>>> <artifactId>yang-parser-impl</artifactId>
>>>                                <version>0.6.1</version>
>>>                                <type>jar</type>
>>> <overWrite>true</overWrite>
>>> <destFileName>yang-parser-impl-0.6.1.jar</destFileName>
>>>                            </artifactItem>
>>>                        </artifactItems>
>>>                    </configuration>
>>>                </execution>
>>>            </executions>
>>>        </plugin>
>>>    </plugins>
>>>  </build>
>>> </project>
>>> ----------------------
>>>>
>>>> . . . just my two cents
>>>> /mde/
>>>>
>>>> On 3/10/2016 3:44 PM, David M. Karr wrote:
>>>>> On 03/10/2016 03:36 PM, Mark Eggers wrote:
>>>>>> David,
>>>>>>
>>>>>> If you're providing a list of dependencies, then yes you'll use the
>> copy
>>>>>> instead of copy-dependencies.
>>>>>>
>>>>>> See the following for that information:
>>>>>>
>>>>>> https://maven.apache.org/plugins/maven-dependency-plugin/index.html
>>>>>>
>>>>>> Also, I notice that you don't have outputDirectory specified. If
you
>>>>>> don't, the dependencies will be copied to
>>>>>> ${project.build.directory}/dependency.
>>>>> Actually, I was specifying that individually on each artifactItem, but
>>>>> it's definitely an improvement to only specify that once.  In any case,
>>>>> it still makes no difference.  It's not writing the artifacts, whether
>> I
>>>>> use "copy" or "copy-dependencies", or whether I say to write them to
>>>>> "libs" or "${project.build.directory}/libs". It ("copy", to be
>> specific)
>>>>> did it the first time I ran this, but never since then.
>>>>>
>>>>> I'm using Maven 3.3.9, with JDK 1.8.0_60.
>>>>>
>>>>>> See the following for that information:
>>>>>>
>>>>>>
>> https://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html
>>>>>>
>>>>>> . . . just my two cents
>>>>>> /mde/
>>>>>>
>>>>>> On 3/10/2016 3:22 PM, David M. Karr wrote:
>>>>>>> Thanks, but replacing my "manual" copy goal with "copy-dependencies"
>> and
>>>>>>> implicit dependency declarations made no difference.  No error
at
>> this
>>>>>>> phase, it just doesn't do anything.
>>>>>>>
>>>>>>> On 03/10/2016 02:57 PM, Mark Eggers wrote:
>>>>>>>> David,
>>>>>>>>
>>>>>>>> On 3/10/2016 2:31 PM, David M. Karr wrote:
>>>>>>>>> Several days ago, on the advice of someone on another
list, I
>>>>>>>>> configured
>>>>>>>>> the use of the "maven-dependency-plugin" in my POM so
that the
>> build
>>>>>>>>> would copy some dependencies into a local folder, not
inside the
>>>>>>>>> target
>>>>>>>>> folder.
>>>>>>>>>
>>>>>>>>> This worked the very first time I ran the build with
it, and I've
>> been
>>>>>>>>> using the results for a while.
>>>>>>>>>
>>>>>>>>> Today I started to look at this again, to ensure that
these copied
>>>>>>>>> artifacts would be properly cleaned up from "mvn clean".
 I first
>>>>>>>>> tried
>>>>>>>>> reconfiguring where it wrote the jars, changing it from
"libs" to
>>>>>>>>> "target/libs".  For some reason, when I ran the build,
it didn't
>>>>>>>>> create
>>>>>>>>> "target/libs", nor did it copy the jars.  At that point,
I thought
>>>>>>>>> there
>>>>>>>>> was some issue with writing them into a subfolder of
"target".
>>>>>>>>>
>>>>>>>>> I then changed it back to "libs", but I implemented additional
>>>>>>>>> "maven-clean-plugin" configuration to make it delete
that folder.
>>>>>>>>> When I
>>>>>>>>> ran "mvn clean", it did what I expected, removing that
folder,
>> along
>>>>>>>>> with "target".
>>>>>>>>>
>>>>>>>>> However, when I then tried to build the whole thing again,
I found
>>>>>>>>> that
>>>>>>>>> it wasn't creating the "libs" folder, and it wasn't copying
the
>> jars
>>>>>>>>> there.  I then tried manually creating "libs", but that
didn't
>>>>>>>>> help.  I
>>>>>>>>> tried adding "--debug", which didn't tell me anything
useful.  I
>>>>>>>>> imagine
>>>>>>>>> the same thing that is making it not copy the jars into
"libs" is
>> the
>>>>>>>>> same thing that prevented it writing them into "target/libs",
so
>> there
>>>>>>>>> likely wasn't a real issue with using a subfolder of
"target", but
>>>>>>>>> something else is just preventing it from copying the
jars.
>>>>>>>>>
>>>>>>>>> This is what I have in the POM for this plugin (eliding
the
>> details of
>>>>>>>>> each artifact):
>>>>>>>>> -----------------
>>>>>>>>>           <plugin>
>>>>>>>>> <groupId>org.apache.maven.plugins</groupId>
>>>>>>>>> <artifactId>maven-dependency-plugin</artifactId>
>>>>>>>>>               <version>2.10</version>
>>>>>>>>>               <executions>
>>>>>>>>>                   <execution>
>>>>>>>>>                       <id>copy</id>
>>>>>>>>>                       <phase>package</phase>
>>>>>>>>>                       <goals>
>>>>>>>>>                           <goal>copy</goal>
>>>>>>>>>                       </goals>
>>>>>>>>>                       <configuration>
>>>>>>>>>                           <artifactItems>
>>>>>>>>>                               <artifactItem>
>>>>>>>>>                               ...
>>>>>>>>>                               </artifactItem>
>>>>>>>>>                               <artifactItem>
>>>>>>>>>                               ...
>>>>>>>>>                               </artifactItem>
>>>>>>>>>                               <artifactItem>
>>>>>>>>>                               ...
>>>>>>>>>                               </artifactItem>
>>>>>>>>>                               <artifactItem>
>>>>>>>>>                               ...
>>>>>>>>>                               </artifactItem>
>>>>>>>>>                           </artifactItems>
>>>>>>>>>                       </configuration>
>>>>>>>>>                   </execution>
>>>>>>>>>               </executions>
>>>>>>>>>           </plugin>
>>>>>>>>> -------------------
>>>>>>>> My copy looks like this:
>>>>>>>>
>>>>>>>> <plugin>
>>>>>>>>    <groupId>org.apache.maven.plugins</groupId>
>>>>>>>>    <artifactId>maven-dependency-plugin</artifactId>
>>>>>>>>    <version>2.10</version>
>>>>>>>>    <executions>
>>>>>>>>     <execution>
>>>>>>>>      <phase>prepare-package</phase>
>>>>>>>>      <goals>
>>>>>>>>       <goal>copy-dependencies</goal>
>>>>>>>>      </goals>
>>>>>>>>      <configuration>
>>>>>>>>
>>  <outputDirectory>${project.build.directory}/lib</outputDirectory>
>>>>>>>>       <includeScope>compile</includeScope>
>>>>>>>>      </configuration>
>>>>>>>>     </execution>
>>>>>>>>    </executions>
>>>>>>>> </plugin>
>>>>>>>>
>>>>>>>> I'm currently running 3.3.3 and JDK 1.8.0_74. I need to upgrade
my
>>>>>>>> Maven.
>>>>>>>>
>>>>>>>> This works as expected, with dependencies getting copied
to
>> target/lib.
>>>>>>>>
>>>>>>>> I have this in my JAR plugin:
>>>>>>>>
>>>>>>>> <addClasspath>true</addClasspath>
>>>>>>>> <classpathPrefix>lib/</classpathPrefix>
>>>>>>>>
>>>>>>>> along with specifying the main class.
>>>>>>>>
>>>>>>>> I create both a zip and a tar.gz file with the assembly plugin.
>>>>>>>>
>>>>>>>> An end user just unpacks the archive, changes to the directory
where
>>>>>>>> the
>>>>>>>> archive was unpacked, and runs java -jar ${artifactId}.jar.
>>>>>>>>
>>>>>>>> Seems to work reasonably well.
>>>>>>>>
>>>>>>>> . . . just my two cents
>>>>>>>> /mde/



Mime
View raw message