Toon posts:

[ant/xdoclet] krijg het niet aan de praat...

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik snap het even niet meer, want ik krijg het zaakje niet aan de praat. Ik heb hieronder maar even wat ik denk dat de meest relevante lapjes tekst zijn gepost.

uit de build xml:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
<property environment="env"/>

<path id="xdoclet.path">
  <fileset dir="${env.XDOCLET_HOME}${file.separator}lib">
      <include name="*.jar"/>
  </fileset>
</path>

<taskdef
        name="ejbdoclet"
        classname="xdoclet.modules.ejb.EjbDocletTask"
        classpathref="xdoclet.path"
/>


en dat roep ik uiteraard verderop aan, maar dan krijg ik de volgende error

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[ejbdoclet] Make sure the jar file containing the ejbdoclet class is on the clas
spath specified in the <taskdef> that defined {2}. These classes are needed in o
rder to generate correct output.
[ejbdoclet]     at xdoclet.DocletTask.checkClass(DocletTask.java:501)
[ejbdoclet]     at xdoclet.modules.ejb.EjbDocletTask.validateOptions(EjbDocletTask.java:82)
[ejbdoclet]     at xjavadoc.ant.XJavadocTask.execute(XJavadocTask.java:53)
[ejbdoclet]     at org.apache.tools.ant.UnknownElement.execute unknownElement.java:193)
[ejbdoclet]     at org.apache.tools.ant.Task.perform(Task.java:341)
[ejbdoclet]     at org.apache.tools.ant.Target.execute(Target.java:309)
[ejbdoclet]     at org.apache.tools.ant.Target.performTasks(Target.java:336)
[ejbdoclet]     at org.apache.tools.ant.Project.executeTarget(Project.java:1339)
[ejbdoclet]     at org.apache.tools.ant.Project.executeTargets(Project.java:1255)
[ejbdoclet]     at org.apache.tools.ant.Main.runBuild(Main.java:609)
[ejbdoclet]     at org.apache.tools.ant.Main.start(Main.java:196)
[ejbdoclet]     at org.apache.tools.ant.Main.main(Main.java:235)

Wie weet wat hierevan de oorzaak is (los natuurlijk van dat hij de bestanden niet kan vinden) Ze staan overigens echt in het opgegeven path...

Verwijderd

De taskdef gaat goed, als die namelijk de class xdoclet.modules.ejb.EjbDocletTask niet kan vinden dan krijg je een andere foutmelding. Iets in de trend van:

code:
1
taskdef class xdoclet.modules.ejb.EjbDocletTaskw cannot be found


Laat je ejbdoclet task eens zien, mischien staat daar iets fouts?

Verwijderd

Topicstarter
Daar heb ik eerlijk gezegd nog niet naar gekeken, daar zitten inderdaad gewoon nog fouten in, maar ik dacht ik pak het wel staps gewijs aan...

Maar het komt nu hier op neer:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
</path>
  <path id="java.dir">
    <fileset dir=".${file.separator}hda${file.separator}src${file.separator}classes"/>
  </path>
  <path id="build.dir">
    <fileset dir=".${file.separator}hda${file.separator}bin"/>
  </path>

   <ejbdoclet       
        destdir="."
        excludedtags="@version,@author"        
        ejbspec="2.0"        
    >
        
        <fileset dir="${java.dir}">
            <include name="*EJB.java"/>
        </fileset>

        <dataobject/>

        <packageSubstitution packages="persistence" substituteWith="interfaces"/>

        <remoteinterface pattern="{0}Remote"/>
        <localinterface pattern="{0}"/>

        <homeinterface />
        <localhomeinterface/>

        <entitypk/>
        <entitycmp/>

        <deploymentdescriptor destdir="${build.dir}${file.separator}ejb${file.separator}META-INF"/>        
    </ejbdoclet>

[ Voor 78% gewijzigd door Verwijderd op 10-04-2003 13:13 ]


Verwijderd

Ziet er zover ik kan zien goed uit. Iig. niet veel anders dan de mijne:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
  <target name="ejbdoclet" depends="init,mkdirs,defineTasks,makeFrameworkJars,checkBeansUpToDate" unless="BeansUptodate">
      <ejbdoclet destdir="${build-generated}" excludedtags="@version,@author,@todo" ejbspec="2.0" force="${xdoclet.force}" verbose="true">
            <fileset dir="${src}">
            <include name="**/app/**/*Bean.java"/>
            </fileset>
            <remoteinterface/>
            <localinterface/>
            <homeinterface/>
            <localhomeinterface/>
            <entitypk/>
            <deploymentdescriptor destdir="${build-resources}/ejb/META-INF"/>
        <jboss
            version="3.0"
            xmlencoding="UTF-8"
            typemapping="${jbossDataSourceMapping}"
            datasource="${jbossDataSource}"
            generateRelations="true"
            />            
      </ejbdoclet>
      <copy todir="${build-resources}/ejb/META-INF" >
         <fileset dir="${build-generated}">
            <include name="**/jboss.xml"/>
            <include name="**/jbosscmp-jdbc.xml"/>
            <include name="**/jaws.xml"/>
         </fileset>
      </copy>
</target>


Het enige wat ik zo te zien anders doe is dat ik mijn taskdef in een task heb staan en niet in de root van de build file:

code:
1
2
3
4
5
6
7
8
9
<!-- defines the custom tasks -->
<target name="defineTasks" depends="init,mkdirs,makeFrameworkJars">
       <taskdef  name="jmxdoclet"
                       classname="xdoclet.modules.jmx.JMXDocletTask"
                       classpathref="project.class.path" />

      <taskdef  name="ejbdoclet" 
          classname="xdoclet.modules.ejb.EjbDocletTask" 
          classpathref="project.class.path"/>


Dat kan eigenlijk niks uitmaken. Ehm... ik neem aan dat je alle jar files van XDoclet op je classpath hebt staan?

Verwijderd

Topicstarter
Nou ik ben nog steeds aan het prutsen, het wil nog niet lukken.
Ik heb het nu zo:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<property environment="env"/>

<path id="xdoclet.path">
      <pathelement path="${env.XDOCLET_HOME}"/>
      <fileset dir="lib">
        <include name="**/*.jar"/>
      </fileset>      
    </path>


    <taskdef
        name="ejbdoclet"
        classname="xdoclet.modules.ejb.EjbDocletTask"
        classpathref="xdoclet.path"        
    />

Maar ik krijg hierop een ClassNotFoundException (refererend naar de EjbDocletTask).

Verwijderd

Hmm.. ik ben geen ant expert maar zo te zien klopt je xdoclet.path niet helemaal. Ik neem aan dat he ${env.XDOCLET_HOME} naar de directory wijst waar al Xdoclet staat. En dat al de xdoclet jars in ${env.XDOCLET_HOME}/lib staan?

Door <pathelement path="${env.XDOCLET_HOME}"/> te gebruiken voeg je die directory toe aan het path niet de jars in die directory. Wat je wilt doen denk ik is het volgende:

code:
1
2
3
4
5
<path id="xdoclet.path">
      <fileset dir="${env.XDOCLET_HOME}">
        <include name="**/*.jar"/>
      </fileset>      
    </path>


Wat je path task nu doet is alle jars gezien vanuit je ${basedir}/lib in je classpath zetten en ik denk niet dat daar je xdoclet jars staan.
Pagina: 1