0

ANT タスクとして wsgen を介して Java アプリケーション サービスから jax-ws wsdl ファイルを生成しようとします。Ant の taskdef 自体が多くの class not found 例外を与えています。初めて「com.sun.tools.ws.ant.WsGen」のクラスが見つからないことを示し、クラスパスに「jaxws-tools-2.1.7.jar」を追加しました。この後、「com/sun/istack/tools/ProtectedTask」に見つからないクラスを指定し、「istack-commons-tools-2.7.jar」を追加しました。現在、「com/sun/tools/xjc/api/util/ToolsJarNotFoundException」のクラスが見つかりません

確かに、私は正しい道をたどっていません。

ここにbuild.xmlがあります

<?xml version="1.0"?>
<project name="Application Services" basedir="." default="compile">
<property file="build.properties"/>
<path id="external.projects">

    <fileset dir="/scratch/softwares" includes="*.jar"/>

</path>

<taskdef name="wsgen" classname="com.sun.tools.ws.ant.WsGen" classpathref="external.projects"> 

</taskdef>


<target name="compile" depends="clean,init">

      <javac destdir="${build.dir}" srcdir="${src.dir}" classpathref="external.projects"/>
</target>
<target name="packaging" depends="compile">
    <mkdir dir="${jar.dir}"/>
    <jar destfile="${jar.dir}/application.services.jar" basedir="${build.dir}"/>
    <wsgen 
        sei="webservice.interfaces.student.IStudentApplicationService"
        destdir="${jar.dir}" cp="external.projects" resourcedestdir="${jar.dir}"
        sourcedestdir="${jar.dir}" genwsdl="true"
        />
</target>
</project>
4

2 に答える 2

1

jar 間の依存関係をデバッグすると、気が狂ってしまう可能性があります......ANT プロジェクトに必要なのは、Apache ivyなどの依存関係マネージャーです。

私が気づいた 2 番目の問題は、2009 年にリリースされた非常に古いバージョンの jaxws-tools を実行していることです。それ以来、非常に多くの更新が行われてきました。

wsgen タスクのマネージド クラスパスを作成するために ivy を使用する方法を示します。

<ivy:cachepath pathid="wsgen.path">
  <dependency org="com.sun.xml.ws" name="jaxws-tools" rev="2.2.10" />
</ivy:cachepath>

<taskdef name="wsgen" classname="com.sun.tools.ws.ant.WsGen" classpathref="wsgen.path"/> 

build.xml

<?xml version="1.0"?>
<project name="Application Services" basedir="." default="packaging" xmlns:ivy="antlib:org.apache.ivy.ant">

  <available classname="org.apache.ivy.Main" property="ivy.installed"/> 

  <target name="install-ivy" description="Install ivy" unless="ivy.installed">
    <mkdir dir="${user.home}/.ant/lib"/>
    <get dest="${user.home}/.ant/lib/ivy.jar" src="http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.3.0/ivy-2.3.0.jar"/>
    <fail message="Ivy has been installed. Run the build again"/>
  </target>

  <target name="resolve" depends="install-ivy" description="Use ivy to resolve classpaths">
    <ivy:cachepath pathid="wsgen.path">
      <dependency org="com.sun.xml.ws" name="jaxws-tools" rev="2.2.10" />
    </ivy:cachepath>
  </target>

  <target name="packaging" depends="resolve">
    <taskdef name="wsgen" classname="com.sun.tools.ws.ant.WsGen" classpathref="wsgen.path"/> 

    <wsgen 
        sei="webservice.interfaces.student.IStudentApplicationService"
        destdir="${jar.dir}" cp="external.projects" resourcedestdir="${jar.dir}"
        sourcedestdir="${jar.dir}" genwsdl="true"
        />
  </target>

</project>

ノート:

  • このビルド ファイルは、ivy プラグインを自動的にインストールします。
  • 依存関係は自動的にダウンロードされ、「解決」ターゲット内にキャッシュされます。
于 2015-12-26T12:50:02.480 に答える
0

build.xml を ivy で完成させます...

<?xml version="1.0"?>
<project name="Application Services" basedir="." default="compile" xmlns:ivy="antlib:org.apache.ivy.ant">
<property file="build.properties"/>
<path id="external.projects">
    <fileset dir="../xface.dto/${jar.dir}" includes="*.jar"/>
    <fileset dir="../webservice.interfaces/${jar.dir}" includes="*.jar"/>

</path>
<available classname="org.apache.ivy.Main" property="ivy.installed"/> 




<target name="info">
      <echo>Apache Ant!</echo>
   </target>
<target name="clean">
    <echo>cleaning....</echo>  
    <delete dir="${build.dir}"/>
    <delete dir="${jar.dir}"/>
   </target>
<target name="init">
    <echo>init....</echo>  
      <mkdir dir="${build.dir}"/>
   </target>
<target name="compile" depends="clean,init">
    <echo>compiling....</echo>  
      <javac destdir="${build.dir}" srcdir="${src.dir}" classpathref="external.projects"/>
</target>
<target name="install-ivy" unless="ivy.installed">
    <echo>installing ivy....</echo>
    <mkdire dir="${user.home}/.ant/lib"/>
    <get dest="${user.home}/.ant/lib/ivy.jar" src="http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.3.0/ivy-2.3.0.jar" />
    <fail message="Ivy has been installed. Run the build again"/>
</target>
<target name="resolve" depends="install-ivy">
    <ivy:cachepath pathid="wsgen.path">
        <dependency org="com.sun.xml.ws" name="jaxws-tools" rev="2.2.10" />
    </ivy:cachepath>
</target>
<target name="packaging" depends="compile,resolve">
    <taskdef name="wsgen" classname="com.sun.tools.ws.ant.WsGen" classpathref="wsgen.path"/> 
    <mkdir dir="${jar.dir}"/>
    <jar destfile="${jar.dir}/application.services.jar" basedir="${build.dir}"/>
    <wsgen 
        sei="application.services.student.StudentApplicationService"
        destdir="${jar.dir}"  resourcedestdir="${jar.dir}"
        sourcedestdir="${jar.dir}" genwsdl="true"
        >

            <classpath>
                <fileset dir="../xface.dto/${jar.dir}" includes="*.jar"/>
                <fileset dir="../webservice.interfaces/${jar.dir}" includes="*.jar"/>
                <pathelement location="./bin"/>
            </classpath>



    </wsgen>
</target>
</project>
于 2016-01-05T12:18:04.203 に答える