[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [m2e-users] EAR, RAD, m2e

Hi,

ok, as I can see you are trying to get it working with the recommended Pom ... Honestly speaking I don't know if / how this exactly works. Our projects are using the standard maven name conventions and we are using the option "Publish with resources on server" in order to get this work. In RAD we have the options under Maven / JavaEE integration both turned off ("Generate application.xml..." and "Maven archiver generates ..."). We are using flat project structure, if this somehow matters. "Use workspace resolution" is on.

Some excerpts from the poms, related to the RAD specifics / config:

plugin declarations:

<plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>${maven-war-plugin.version}</version>
                    <configuration>
                        <failOnMissingWebXml>false</failOnMissingWebXml>
                        <!-- workaround for issue MWAR-296: http://jira.codehaus.org/browse/MWAR-296 -->
                          <outputFileNameMapping>@{artifactId}@-@{baseVersion}@-@{classifier}@.@{extension}@</outputFileNameMapping>
                         <archive>
                            <manifest>
                                  <addClasspath>true</addClasspath>
                                  <!-- Workaround for Maven bug #MJAR-156 (https://jira.codehaus.org/browse/MJAR-156) -->
                                <useUniqueVersions>false</useUniqueVersions>
                              </manifest>
                              <manifestEntries>
                                  <Built-By>build-master</Built-By>
                                  <Build-version>${project.version}</Build-version>
                              </manifestEntries>
                          </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-ejb-plugin</artifactId>
                    <version>${maven-ejb-plugin.version}</version>
                    <configuration>
                        <ejbVersion>${ejb.spec.version}</ejbVersion>
                        <archive>
                            <manifest>
                                <addClasspath>true</addClasspath>
                            </manifest>
                        </archive>
                    </configuration>
                </plugin>
<plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-ear-plugin</artifactId>
                    <version>${maven-ear-plugin.version}</version>
                    <configuration>
                        <version>${ear.spec.version}</version>
                    </configuration>
                </plugin>


in the web projects:

<build>
        <!-- avoid the Broken output dir rule warning -->
        <outputDirectory>src/main/webapp/WEB-INF/classes</outputDirectory>


in the ear projects we still generate the application.xml even if it is not strictly necessary for some projects anymore, but "never change a running system":

<build>
      <finalName>xxxEAR</finalName>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-ear-plugin</artifactId>
        <configuration>
            <generateApplicationXml>true</generateApplicationXml>
            <archive>
                <manifestEntries>
                    <Build-version>${project.version}</Build-version>
                </manifestEntries>
            </archive>
            <modules>
                <webModule>
                    <groupId>xxx</groupId>
                    <artifactId>xxx-web</artifactId>
                    <contextRoot>xxx</contextRoot>
                </webModule>
                <ejbModule>
                    <groupId>xxx</groupId>
                    <artifactId>xxx-ejb</artifactId>
                </ejbModule>
            </modules>
              <description>XXX application</description>
        </configuration>
      </plugin>
    </plugins>
  </build>

classpath config:

we are using the approach as described in http://maven.apache.org/plugins/maven-war-plugin/examples/war-manifest-guide.html to filter the resources landing in WEB-INF/lib and referenced from the EAR level. So, actually all dependencies, shared across ejb/war are defined in the dependency section of the ear-pom. All necessary deps for the web only are listed in the dependency section of the web-pom, however the ear entries are defined as optional, causing manifest.mf to be generated correctly and avoiding duplicate them in WEB-INF/lib.

RAD metadata - related only if you are using SCM with other devs:

using the above approach causes the classpath settings to be generated different in case that developer1 has the project1 in her workspace and developer2 not. In this situation maintaining .settings in the SCM will always lead to conflicts. We simply removed all the metadata and maven generated resources and are relaying on "the import as maven project" to generated them correct - I think this is in general the recommended approach, but I just mention it here.

WAS WTE deployment:

is is done via the tool - Add / Remove project, etc. Because we have "Publish with resources on server" we can see what's actually deployed on the server. As I mentioned after a release and update of the pom versions we always have to make "Clean" publish on the server in order to get consistent deployment.

The inconsistency in the errors you mention is somehow normal ;-) - sometimes we get weird errors in the poms, especially in the web-poms, but Update Maven Project helps in any case.

So, good luck!


On Mon, Jul 22, 2013 at 11:23 AM, Sander Verhagen <verhagen@xxxxxxxxxx> wrote:
Hi,


Thanks for your response, Ilko.

I'm on 8.5.1 and I hadn't checked the infocenter page. You may have been particularly referencing "Recommended POM entries for projects targeting WebSphere® Application Server". I added some of that to my project but am getting similar results as before. (It seemingly being slightly inconsistent with its errors and other bombs makes it harder to focus and thus pinpoint the issue.) That page doesn't say a whole lot about EARs to begin with. Do you have a working example of your EAR (dependent on EJB) project?

What are recommended choices for generateApplicationXml and includeLibInApplicationXml?

As for the maven-subclipse-connector, no Subversion here :-(

Best regards, Sander.



Sander Verhagen
[ Verhagen@xxxxxxxxxx ]


On 20-7-2013 1:23, Ilko Iliev wrote:
Hi Sander,

could you please provide the versions of the product you are using.
Apparently, if you are on 8.5.1 RAD have you checked the infocenter
about the maven integration -
http://pic.dhe.ibm.com/infocenter/radhelp/v8r5/topic/com.ibm.etools.maven.doc/topics/maven_intro.html
- this is a new feature as from v8.5.1 in RAD. We are still on 8.5.0 and
are using the m2e + m2e-wtp plugins manually installed. The most
important part to make the deployment to WAS WTE work is either to
follow the recommendations for maven project configuration as described
in the link above OR to use the maven native name conventions for the
artifacts, however in this case only "Publish to server with resources
on server" does work (otherwise you get NoClassDefFoundErrors or similar
at publish time). And after version changes we have to make "Clean" on
the server to get everything updated - we've opened PMR for this with
IBM but we haven't got resolution yet.
As for import maven project - we've tried it only from SVN with the
provided maven-subclipse-connector. Here we have the issue that if you
try this from the Package Explorer you get some weird error, but if you
try this directly in the SVN explorer view everything works, which is ok
for us at the moment.

Hope this helps a bit,
Ilko


On Sat, Jul 20, 2013 at 1:44 AM, Sander Verhagen <verhagen@xxxxxxxxxx
<mailto:verhagen@xxxxxxxxxx>> wrote:

    Hi all,


    I searched through this list's archives, I browsed the web, I played
    with IBM's examples ("RAD_m2e-Nov(update Jun 2012).pdf"), but I'm
    still at a loss. The group's help would be much appreciated!

    I have a multi-module Maven project that ultimately builds into EAR
    files, containing EJBs, WARs and utility JARs. I'm focusing on a
    specific EAR and trying to move from command-line to RAD.

    I could not find a comprehensive tutorial or anything pertaining to
    EAR files and running WTP server (Servers tab). So that would be a
    help, or your suggestions for my specific issue would be a great
    help and much appreciated!

    Following works:
    - Command-line: cd ..._EAR; mvn clean install; "Import EAR file"
    (i.e. binary) in RAD; drag the project to my WAS/WTP server (Servers
    tab)

    Following doesn't work:
    - "Import Existing Maven Projects" (i.e. source project) in RAD;
    drag the project to my WAS/WTP server (Servers tab)

    It finally fails with the following error:
    [7/19/13 14:16:50:115 PDT] 00001808 InstallSchedu I   ADMA5014E: The
    installation of application MYCOMPANY_SERVICE_CUSTOMER_EAR failed.
    [7/19/13 14:16:50:115 PDT] 00001808 SystemErr     R
    org.eclipse.jst.j2ee.__commonarchivecore.internal.__exception.__NoModuleFileException:

    A file does not exist for module element having uri:
    MYCOMPANY_EXCEPTIONS.jar

    However, it appears that this dependency is nicely referenced from
    the org.eclipse.wst.common.__component file:

    <dependent-module archiveName="MYCOMPANY___EXCEPTIONS.jar"
    deploy-path="/"
    handle="module:/classpath/var/__M2_REPO/com/my-company/java/__utility/MYCOMPANY_EXCEPTIONS/__0.0.1-XXX/MYCOMPANY___EXCEPTIONS-0.0.1-XXX.jar">
         <dependency-type>uses</__dependency-type>

    </dependent-module>

    There is also a bunch of errors that I that I don't know what to do
    with, as follows: E
    org.eclipse.jst.j2ee.__commonarchivecore.internal.__strategy.LoadStrategyImpl

    openNestedArchive(String) An error occurred while opening a nested
    archive: IWAE0023E Unable to open module file
    "commons-beanutils-core.jar" in EAR file
    "C:/workspace/xxx/.metadata/.__plugins/org.eclipse.wst.__server.core/tmp0\MYCOMPANY___SERVICE_CUSTOMER_EAR"


    There is also a bunch of warnings that I chose to ignore for now, as
    follows: W
    org.eclipse.jst.j2ee.__commonarchivecore.internal.__impl.EARFileImpl

    openNestedArchive - module An error occurred while opening a nested
    archive: IWAE0006E Archive is not a valid Application Client JAR
    File because the deployment descriptor can not be found (case
    sensitive): META-INF/application-client.__xml


    This is the EAR plugin configuration that I'm using:

    <plugin>
       <groupId>org.apache.maven.__plugins</groupId>
       <artifactId>maven-ear-plugin</__artifactId>

       <version>2.8</version>
       <configuration>
         <archive>
           <manifest>
             <addClasspath>true</__addClasspath>

           </manifest>
         </archive>
         <skinnyWars>false</skinnyWars>
         <includeLibInApplicationXml>__true</__includeLibInApplicationXml>
         <displayName>${project.__artifactId}</displayName>
         <fileNameMapping>no-version</__fileNameMapping>
         <modules>
           <ejbModule>
             <groupId>com.my-company...</__groupId>
             <artifactId>MYCOMPANY_SERVICE___CUSTOMER_EJB</artifactId>
             <moduleId>EjbModule___1316615955479</moduleId>

           </ejbModule>
         </modules>
         <security/>
       </configuration>
    </plugin>


    As said, your help is much appreciated! Best regards, Sander.



    --


    Sander Verhagen
    [ Verhagen@xxxxxxxxxx ]
    _________________________________________________
    m2e-users mailing list
    m2e-users@xxxxxxxxxxx <mailto:m2e-users@xxxxxxxxxxx>
    https://dev.eclipse.org/__mailman/listinfo/m2e-users
    <https://dev.eclipse.org/mailman/listinfo/m2e-users>







_______________________________________________
m2e-users mailing list
m2e-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/m2e-users

_______________________________________________
m2e-users mailing list
m2e-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/m2e-users