2013-03-15 5 views
4

난 sdl에서 내 수업을 빌드하는 간단한 개미 스크립트가 있습니다. 불행히도 wsimport는 즉시 실패합니다. 나는 그것이 classpaths와 관련이 있다고 생각한다. 내가 명령 줄은 JAX-WS bin 디렉토리의 모든 것을에서 wsimport의에서 자세한 정보 로깅에 의해 생성 실행하면개미 wsimport 작업이 실패했습니다

[wsimport] 15 Mar 2013 12:23:25 PM com.sun.xml.bind.v2.util.XmlFactory createDocumentBuilderFactory [wsimport] SEVERE: null [wsimport] java.lang.AbstractMethodError: javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V [wsimport] at com.sun.xml.bind.v2.util.XmlFactory.createDocumentBuilderFactory(XmlFactory.java:176) [wsimport] at com.sun.tools.xjc.reader.internalizer.DOMForest.(DOMForest.java:162) [wsimport] at com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.resetSchema(SchemaCompilerImpl.java:215) [wsimport] at com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.(SchemaCompilerImpl.java:114) [wsimport] at com.sun.tools.xjc.api.XJC.createSchemaCompiler(XJC.java:72) [wsimport] at com.sun.tools.ws.wscompile.WsimportOptions.(WsimportOptions.java:152) [wsimport] at com.sun.tools.ws.wscompile.WsimportTool.(WsimportTool.java:89) [wsimport] at com.sun.tools.ws.wscompile.WsimportTool.(WsimportTool.java:92) [wsimport] at com.sun.tools.ws.ant.WsImport2.execute(WsImport2.java:848) [wsimport] at com.sun.istack.tools.ProtectedTask.execute(ProtectedTask.java:103) [wsimport] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:269) [wsimport] at org.apache.tools.ant.Task.perform(Task.java:364) [wsimport] at org.apache.tools.ant.Target.execute(Target.java:301) [wsimport] at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:135) [wsimport] at org.eclipse.ant.internal.launching.remote.InternalAntRunner.parseBuildFile(InternalAntRunner.java:192) [wsimport] at org.eclipse.ant.internal.launching.remote.InternalAntRunner.run(InternalAntRunner.java:401) [wsimport] at org.eclipse.ant.internal.launching.remote.InternalAntRunner.main(InternalAntRunner.java:138)

완벽

[wsimport] command line: wsimport -d C:\Development\Source\ccs\jaxws-output -extension -verbose -target 2.1 C:\Development\Source\ccs\wsdl\some.wsdl -wsdllocation http://localhost/wsdl 
작동 :

<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport"> 
    <classpath> 
     <pathelement location="${jaxws.lib.dir}/jaxws-tools.jar" /> 
    </classpath> 
</taskdef> 

<wsimport 
    wsdl="${project.wsdl.dir}\some.wsdl" 
    destdir="${jaxws.output.dir}" 
    keep="false" 
    extension="true" 
    verbose="true" 
    wsdlLocation="http://localhost/wsdl" 
    target="2.1"> 
    <depends file="${project.wsdl.dir}"/> 
    <produces dir="${jaxws.output.dir}"/> 
</wsimport> 

이는 생산 출력

해결책을 찾으려고했지만 지금은 아이디어가 없습니다.

+0

이이 개미 특정 문제 의미 ... 대상 버전을 추가, 출력 디렉토리를 사용자 정의 할 수 있습니다. – ACV

답변

7

그 중 하나라고 생각합니다. (taskdefwsimport)의 접근 방식에서 사용하기가 지루한 것들 중에서 특히 웹 서비스에서 SSL 및 기본 인증을 사용하려는 경우 환경 변수가 추가됩니다. 또 다른 방법은 새 작업을 정의하지 않고 wsimport 도구를 사용할 수 있습니다. 뭐 그런 :

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE project> 
<project name="generate-client" default="main" basedir="."> 
    <property name="java.home" 
     value="X:\Software\jdk1.7.0_11" /> 
    <property name="wsdl.location" 
     value="http://localhost/wsdl" /> 
    <target name="main"> 
     <exec executable="${java.home}\bin\wsimport.exe"> 
      <arg line="${wsdl.location} -s src -Xdebug -verbose -Xnocompile" /> 
     </exec> 
    </target> 
</project> 

지금 당신이 아이디어를 가지고, 당신은

+0

실제로 플랫폼에 독립적 일 수 있도록이 접근법을 피하고 싶었습니다. 그러나 만약 이것이 제안 된 방법이라면, 나는 그것을 할 것이다 – Leon

+1

' 여러 번, 지원하려는 각 패밀리에 하나씩 사용하면 빌드는 세미 - 플랫폼 - 독립적 일 수있다. –

관련 문제