Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [m2e-users] FW: New m2e-wtp behaviour regarding classpath management

Paul,

please open an enhancement request. I'll see if I can slip it in m2e-wtp 0.13.0, since it sounds trivial to do. But don't have too much hope.

regards,

Fred Bricon

2011/6/21 Paul Vonnahme <vonnahme@xxxxxxxxx>
Fred,

First let me say I appreciate all the work you've done on this plugin.

In reference to your latest changes, would it be possible to add an
option in the workspace preferences as to the location of the
generated manifest for wars? Maybe have it default to
target/m2e-wtp/web-resources/, but have a spot we can uncheck if we
want it generated in the source directory? This would be consistent
with the existing Workspace->Preferences->Maven->WTP Integration->"EAR
Project preferences"->"Generate application.xml under the build
directory" option, and it would be very much appreciated.

It's been quite a while since I've looked at the code, but if a patch
would help, I'd be willing to give it a shot.

Thanks,
Paul

> From: m2e-users-bounces@xxxxxxxxxxx [mailto:m2e-users-bounces@xxxxxxxxxxx]
> On Behalf Of Fred Bricon
> Sent: Thursday, June 16, 2011 3:38 AM
> To: Maven Integration for Eclipse users mailing list
> Cc: Max Rydahl Andersen; Chuck Bridgham
> Subject: [m2e-users] New m2e-wtp behaviour regarding classpath management
>
> Hi,
>
> 2 significant changes have been made to m2e-wtp 0.13.0 with regard to
> classpath management :
>
> - The WTP classpath libraries are gone [1] : The webapp and EAR libraries
> always conflicted somehow with the Maven library. In order to workaround
> these conflicts, we basically had to jump through hoops  to move classpath
> entries from one library to the other. Another big problem we had while
> keeping the WTP libraries was dependency leakage when running unit tests
> [2][3][4]. The Maven library handles test dependencies very well, but once
> you add the WTP libraries, you start seeing inconsistent behavior between
> Maven CLI and Eclipse. This is because regular WTP dependencies basically
> add EVERYHTING to the classpath.
>
> - Manifest management has been changed [5]. Before, in m2e-wtp, the manifest
> was generated "manually" using WTP's API, for web projects only. In the
> process, the manifest kinda fixed some maven shortcomings in order to handle
> skinny wars (didn't add a classpath prefix for EJBs, contrary to maven).
> Now, for Web, EAR, EJB, Utility and Connector projects, a manifest is
> generated via a call to the Maven's archiver.
> That means no more impedance mismatch between Maven and Eclipse manifests.
> Manifest customization is reflected on the fly in the generated file.
> For jar, ejb and connector projects, it is generated under target/classes.
> For web projects, it goes under target/m2e-wtp/web-resources/ and for EARs,
> goes under target/m2e-wtp/ear-resources/
> Since the EAR library is gone, the manifest is no longer used to reflect
> compile classpath within Eclipse and is only used for runtime classpath
> resolution.
> Since it now follows the same rules as Maven, how do you handle skinny wars
> with ejbs and classpath prefix? One solution is to use your own Class-Path
> entry, which will be appended with the classpath computed by the maven
> archiver. So, for instance :
>
>           <plugin>
>               <groupId>org.apache.maven.plugins</groupId>
>               <artifactId>maven-war-plugin</artifactId>
>               <version>2.1.1</version>
>               <configuration>
>                   <warSourceExcludes>WEB-INF/lib/*.jar</warSourceExcludes>
>                   <archive>
>                       <manifest>
>                          <addClasspath>true</addClasspath>
>                          <classpathPrefix>lib/</classpathPrefix>
>                      </manifest>
>                      <manifestEntries>
>
>  <Class-Path>sample-ejb-${pom.version}.jar</Class-Path>
>                      </manifestEntries>
>                   </archive>
>               </configuration>
>           </plugin>
>
> will generate something like :
>
> Manifest-Version: 1.0
> Built-By: fbricon
> Build-Jdk: 1.6.0_24
> Class-Path: sample-ejb-0.0.1-SNAPSHOT.jar lib/sample-util-0.0.1-SNAPSH
>  OT.jar
> Created-By: Maven Integration for Eclipse
>
> Of course, the "Created-By: Maven Integration for Eclipse" entry can be
> overwritten using your own value :
>                      <manifestEntries>
>                          <Created-By>My kick-ass IDE</Created-By>
>                      </manifestEntries>
>
> One last thing, I've tried to delete all new MANIFESTS.MFs automatically
> generated by WTP. So hopefully, your source control shouldn't be polluted
> anymore.
>
> You can try the nightly build to test these changes, see if it doesn't
> disrupt existing behaviour in your projects [7]
> m2e-wtp 0.13.0 works with m2e 1.0.0 and is compatible with Helios (e3.6) and
> Indigo (e3.7). It's incompatible with former Eclipse versions
>
> Expect a new release next week, at the same time as Eclipse Indigo -more or
> less-.
>
> regards,
>
> Fred Bricon
>
> [1] https://issues.sonatype.org/browse/MECLIPSEWTP-133 Remove Webapp and EAR
> classpath libraries from WTP projects
> [2] https://issues.sonatype.org/browse/MECLIPSEWTP-10 Wrong runtime
> classpath resolution for war packaging: application-classpath includes test
> classes from dependencies (projects)
> [3] https://issues.sonatype.org/browse/MECLIPSEWTP-52 Optional dependencies
> are available during dependent web projects tests
> [4] https://issues.sonatype.org/browse/MECLIPSEWTP-91 WTP and Multi-module
> project woes
> [5] https://issues.sonatype.org/browse/MECLIPSEWTP-45 Bad MANIFEST in Jar
> (WTP)
> [6]
> http://download.jboss.org/jbosstools/builds/staging/m2eclipse-wtp-e37/all/repo/
>
> --
> "Have you tried turning it off and on again" - The IT Crowd
_______________________________________________
m2e-users mailing list
m2e-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/m2e-users



--
"Have you tried turning it off and on again" - The IT Crowd

Back to the top