Avatar billede cprovstgaard Nybegynder
09. maj 2003 - 13:24 Der er 14 kommentarer og
2 løsninger

WebSphere & Ant

Jeg er muligvis en smule off-topic her, men jeg har ikke kunnet finde en mere passende kategori... Håber at der er en her der kan hjælpe:

Jeg anvender Ant til at udføre min ejbbuild til WebSphere.

I mit target "ejbjar" anvender jeg ibm's target "websphere" som følger

      <websphere ejbdeploy="true"
        tempdir="${ws.build.lib}"
        destdir="${ws.build.lib}"
        trace="true">
        <wasclasspath>
          <pathelement location="${websphere.home}/deploytool/itp/plugins/org.eclipse.core.boot/boot.jar"/>
          <pathelement location="${websphere.home}/deploytool/itp/plugins/com.ibm.etools.ejbdeploy/runtime/batch.jar"/>
          <pathelement location="${websphere.home}/lib/xerces.jar"/>
          <pathelement location="${websphere.home}/lib/ivjejb35.jar"/>
          <pathelement location="${websphere.home}/lib/j2ee.jar"/>
          <pathelement location="${websphere.home}/lib/vaprt.jar"/>
        </wasclasspath>

        <classpath refid="classpath.websphere.ejb"/>
      </websphere>

Mit problem:
Når denne blok fejler (fx hvis websphere.home ikke findes) får jeg stadig "BUILD SUCCESFUL".

Mit spørgsmål:
Hvordan får jeg mit target til at crashe med target websphere ??





PS:
Det fulde target:

  <target name="ejbjar" depends="build">
    <ejbjar srcdir="${ws.build.classes}"
      basejarname="prototypeEJB"
      manifest="${ws.etc}/Manifest.mf"
      descriptordir="${ws.etc}">

      <websphere ejbdeploy="true"
        tempdir="${ws.build.lib}"
        destdir="${ws.build.lib}"
        trace="true">
        <wasclasspath>
          <pathelement location="${websphere.home}/deploytool/itp/plugins/org.eclipse.core.boot/boot.jar"/>
          <pathelement location="${websphere.home}/deploytool/itp/plugins/com.ibm.etools.ejbdeploy/runtime/batch.jar"/>
          <pathelement location="${websphere.home}/lib/xerces.jar"/>
          <pathelement location="${websphere.home}/lib/ivjejb35.jar"/>
          <pathelement location="${websphere.home}/lib/j2ee.jar"/>
          <pathelement location="${websphere.home}/lib/vaprt.jar"/>
        </wasclasspath>

        <classpath refid="classpath.websphere.ejb"/>
      </websphere>



      <include name="ejb-jar.xml"/>

      <support dir="${ws.build.classes}">
        <include name="**/*.*"/>
      </support>

      <support dir="${ws.src}">
        <include name="**/*.java"/>
      </support>

      <dtd publicId="-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN"
        location="${ws.etc}/ejb-jar_1_1.dtd"/>
    </ejbjar>
  </target>
Avatar billede arne_v Ekspert
09. maj 2003 - 13:31 #1
J2EE var nok en mere korrekt kategori.

:-)

Men tilbage til dit problem.

Kan du ikke løse det med fail tasket ?
Avatar billede disky Nybegynder
09. maj 2003 - 13:32 #2
Den korrekt gruppe havde været enten JSP eller J2Ee men pyt med det.
Avatar billede arne_v Ekspert
09. maj 2003 - 13:32 #3
<fail message="No websphere.home" unless="webpshere.home"/>
Avatar billede cprovstgaard Nybegynder
09. maj 2003 - 13:38 #4
Vi er muligvis på rette spor med dit svar Arne V, men der mangler 100 gram:
Jeg vil gerne crashe UANSET af hvilken grund websphere target fejler.
Avatar billede cprovstgaard Nybegynder
09. maj 2003 - 13:38 #5
Og tak for svaret i hvert fald....
Avatar billede disky Nybegynder
09. maj 2003 - 13:59 #6
Der findes helt sikkert mailing lister der omhandler Ant specifikke ting, spørg der, der er ekseperterne indenfor ant.
Avatar billede cprovstgaard Nybegynder
09. maj 2003 - 14:16 #7
Hej Disky,
Tak for rådet - du har ganske givet ret. Jeg lader mit spørgsmål stå her, for at give eventuelle ant-hajer der svømmer forbi en chance for at løse problemet.
Avatar billede disky Nybegynder
09. maj 2003 - 14:22 #8
held og lykke.
Avatar billede arne_v Ekspert
09. maj 2003 - 15:20 #9
Jeg tror ikke at du kan gøre noget fra ant.

Ant kalder ejbdeploy og hvis ikke den returnerer fejl, så kan ant
ikke gøre noget.

Du kan bruge fail task til at teste for properties.

Og du kan bruge available task til at teste om f.eks. jar filer er
der og så bruge fail task til at teste på den property available sætter.

Lidt klodset. Men det er faktisk noget man gør.
Avatar billede arne_v Ekspert
09. maj 2003 - 22:19 #10
Følgende er sakset fra UML2EJB:

    <target name="check-environment">
        <antcall target="check-uml2ejb"/>

        <antcall target="check-buildclasspath"/>

        <available property="jaxb.present"
                  classname="javax.xml.bind.JAXBException"
                  classpathref="build.class.path" />
        <antcall target="wrong-jaxb"/>

        <available property="velocity.present"
                  classname="org.apache.velocity.context.Context"
                  classpathref="build.class.path" />
        <antcall target="wrong-velocity"/>

        <available property="ejbdoclet.present"
                  classname="xdoclet.modules.ejb.EjbDocletTask"
                  classpathref="build.class.path" />
        <antcall target="wrong-ejbdoclet"/>

        <available property="ant.present"
                  classname="org.apache.tools.ant.types.EnumeratedAttribute"
                  classpathref="build.class.path" />
        <antcall target="wrong-ant"/>

        <available property="log4j.present"
                  classname="org.apache.log4j.Category"
                  classpathref="build.class.path" />
        <antcall target="wrong-log4j"/>

        <available property="j2ee.present"
                  classname="javax.ejb.EntityBean"
                  classpathref="build.class.path" />
        <antcall target="wrong-j2ee"/>

        <available property="uml2ejb.present"
                  classname="de.mbohlen.tools.uml2ejb.anttasks.Uml2EjbGenTask"
                  classpathref="build.class.path" />
        <antcall target="wrong-uml2ejb"/>
    </target>

    <target name="check-uml2ejb" unless="uml2ejb.home">
        <fail>
            Property "uml2ejb.home" is not set. Please use the file
            "build.properties" in the directory ${basedir} to set
            this property. It must point to the UML2EJB installation
            directory which contains the file "uml2ejb.jar".
        </fail>
    </target>

    <target name="check-buildclasspath" unless="build.classpath">
        <fail>
            Property "build.classpath" is not set. Please use the file
            "build.properties" in the directory ${basedir} to set
            this property. It must list all external jars required
            for the build to succeed.  "build.properties.sample"
            provides an example on how to set it up.
        </fail>
    </target>

    <target name="wrong-uml2ejb" unless="uml2ejb.present">
        <fail>
            Property "build.classpath" is set but it doesn't seem
            to contain the Uml2Ejb jar.
        </fail>
    </target>

    <target name="wrong-jaxb" unless="jaxb.present">
        <fail>
            Property "build.classpath" is set but it doesn't seem
            to contain the JAXB jar.
        </fail>
    </target>

    <target name="wrong-velocity" unless="velocity.present">
        <fail>
            Property "build.classpath" is set but it doesn't seem
            to contain the Velocity jar.
        </fail>
    </target>

    <target name="wrong-ejbdoclet" unless="ejbdoclet.present">
        <fail>
            Property "build.classpath" is set but it doesn't seem
            to contain the Xdoclet jar.
        </fail>
    </target>

    <target name="wrong-ant" unless="ant.present">
        <fail>
            Property "build.classpath" is set but it doesn't seem
            to contain the ant jar.
        </fail>
    </target>

    <target name="wrong-log4j" unless="log4j.present">
        <fail>
            Property "build.classpath" is set but it doesn't seem
            to contain the log4j jar.
        </fail>
    </target>

    <target name="wrong-j2ee" unless="j2ee.present">
        <fail>
            Property "build.classpath" is set but it doesn't seem
            to contain the J2EE jars.
        </fail>
    </target>
Avatar billede arne_v Ekspert
25. maj 2003 - 23:13 #11
Kunne du bruge det sidste til noget ?
Avatar billede cprovstgaard Nybegynder
28. maj 2003 - 15:33 #12
Hej ArneV,
Njaarj, egentlig ikke - Jeg er stadig nødt til at have manuel overvågning af mit target idet jeg ikke kan forudsige alle fejlsituationer programmatisk. Det er faktisk et temmeligt stort problem idet det forhindrer automatisk fejlopsamling ved fx natlige builds. Jeg takker imidlertid for din indsats der kan bruges til en række forudsigelige fejlsituationer. Vil gerne tildele dig 100 points hvis jeg kan gennemskue hvorledes dette gøres...
Avatar billede arne_v Ekspert
28. maj 2003 - 15:53 #13
Første trin er at jeg skal ligge et svar igen.

:-)
Avatar billede arne_v Ekspert
28. maj 2003 - 15:54 #14
Næste trin er så at du selv ligger et svar og så fordeler
point (point til dig selv = de point der ikke skal uddeles).
Avatar billede arne_v Ekspert
28. maj 2003 - 16:24 #15
Løs ide:

Hvis nu man ikke kan få ejbdeploy til at fejle tilpas voldsomt.
Hvad så med et alternativt approach. Generere og deploye en "build version
session bean" og så kalde den og se om den er blevete deployet. Absolut en
grim workaround. Men hvad gør man ikke for at opnå det man vil.
Avatar billede cprovstgaard Nybegynder
02. juni 2003 - 07:28 #16
Hej Arne_V, mægtig snedig den sidste løsning, men (igen) desværre har jeg et ejbdeploy target pr EJB og jeg kan ikke være sikker på at de fejler simultant... thanx anyway...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester