Hi Manjula,
In that case we can configure maven clean plugin as follows, please notice
the exlcude section.
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>2.6.1</version>
<configuration>
<filesets>
<fileset>
<directory>src/main/webapp/WEB-INF/lib/</directory>
<followSymlinks>false</followSymlinks>
* <excludes>*
* <exclude>**/additional-library.jar</exclude>*
* </excludes>*
</fileset>
</filesets>
</configuration>
</plugin>
And this not applicable only to jars, we can exclude any of the content in
lib directory as user prefers.
Thanks,
Kasun
*Kasun de Silva*
Software Engineer | *WSO2 Inc.*; http://wso2.com
lean.enterprise.middleware
email : [email protected]
mobile : +94 77 794 4260
On Fri, Oct 9, 2015 at 10:43 AM, Manjula Rathnayake <[email protected]>
wrote:
> Hi Kasun,
>
> +1 on the suggested solution. Can you please provide the maven plugin
> configuration when we have jars that are not defined as dependencies?
>
> thank you.
>
> On Wed, Oct 7, 2015 at 5:50 PM, Kasun De Silva <[email protected]> wrote:
>
>> I'm currently working on [1], and the issue can be describe as below.
>>
>> AF/AppCloud provides maven webapp archetype with preconfigured maven war
>> plugin, and we'll get following archetype structure,
>>
>> ├── pom.xml
>> ├── src
>> │ └── main
>> │ ├── resources
>> │ └── webapp
>> │ ├── index.jsp
>> │ ├── META-INF
>> │ └── WEB-INF
>> │ ├── classes
>> │ ├── lib
>> │ └── web.xml
>> └── target
>> ├── classes
>> ├── sample_app.war
>> └── surefire
>>
>> Executing following steps will reproduce the issue against the above app,
>>
>> 1. Add a dependency to the pom.xml and build it. Check the war file and
>> you will see the jar there.
>> 2. Change the version of above dependency. Lets assume previous version
>> is 1.0.0 and new one is 2.0.0. Build again.
>> 3. When you check the built war file, you will see both versions inside
>> it.
>>
>> The reason for this behavior is, with the maven war plugin, there is a
>> webapp folder created. When we build the app, there is a *WEB-INF/lib*
>> directory
>> created inside that one and the jars (dependencies) are copied to it.
>>
>> └── WEB-INF
>> │ ├── classes
>> │ ├── lib
>> │ │ └── dependancy-1.0.0.jar
>> │ └── web.xml
>>
>> After executing the second step,
>>
>> └── WEB-INF
>> │ ├── classes
>> │ ├── lib
>> │ │ ├── dependancy-1.0.0.jar
>> │ │ └── dependancy-2.0.0.jar
>> │ └── web.xml
>>
>> When we rebuild (even with a maven clean install), those jars are not
>> getting cleaned and new jars are added.
>>
>> Even when we remove these dependancies from pom.xml this jars will still
>> exists and will result in adding unnecessary jars into the artifact.
>>
>> A possible solution would be we can add a maven clean plugin and clean
>> the content on the *WEB-INF/lib *directory while doing the mvn:clean.
>>
>> But what if the user has other libraries and other content which are not
>> added by maven dependencies and still required. In that case we
>> can exclude [2] those in maven clean plugin.
>>
>> WDYT about the this solution ? Or are there any possible solutions to
>> prevent this behavior ?
>>
>>
>>
>> [1] https://wso2.org/jira/browse/APPFAC-3482
>>
>>
>> Thanks,
>> Kasun
>>
>> *Kasun de Silva*
>> Software Engineer | *WSO2 Inc.*; http://wso2.com
>> lean.enterprise.middleware
>>
>> email : [email protected]
>> mobile : +94 77 794 4260
>>
>>
>
>
> --
> Manjula Rathnayaka
> Associate Technical Lead
> WSO2, Inc.
> Mobile:+94 77 743 1987
>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev