2016-05-09 23 views
3

mavenプロジェクトをgradleに移行する必要があります。 Mavenプロジェクトは、このようなmaven-jaxb2-plugin(プラグインのバージョンがルートpom.xmlに設定されている)を使用しています。だから、私はGradleの中に同じ機能を実現したかったGradleのMaven jaxb2プラグイン

<plugin> 
    <groupId>...</groupId> 
    <artifactId>maven-jaxb2-plugin</artifactId> 
    <executions> 
    <execution> 
     <goals> 
     <goal>generate</goal> 
     </goals> 
    </execution> 
    </executions> 
    <configuration> 
    <generatePackage>package for generated classes</generatePackage> 
    <schemaDirectory>directory containing XSD files</schemaDirectory> 
    <includeSchemas> 
     <includeSchema>XSD file name</includeSchema> 
     <includeSchema>XSD file name</includeSchema> 
     ... 
    </includeSchemas> 
    <strict>true</strict> 
    <verbose>true</verbose> 
    <extension>true</extension> 
    </configuration> 
<plugin> 

、これは私が持っているものです。

plugins { 
    id "com.github.jacobono.jaxb" version "1.3.5" 
} 
dependencies { 
    jaxb "org.glassfish.jaxb:jaxb-runtime:2.2.11" 
    jaxb "org.glassfish.jaxb:jaxb-xjc:2.2.11" 
} 
jaxb { 
    xsdDir = "directory containing XSD files" 
    xjc { 
    taskClassname = "com.sun.tools.xjc.XJC2Task" 
    generatedPackage = "package for generated classes" 
    } 
} 
compileJava.dependsOn xjc 

このプロジェクトは、他のプロジェクトなどに依存するマルチプロジェクトビルドの一部ですが、関係するとは思われません。

私は正しいトラックにいますか?行動は、私がmvn clean installgradle clean build

を行うときに、同じではないようですので、私は聞いてるのよ質問:

  • (私たちはGradleのに使用するXSDファイル名を指定する方法はあります私たちはmavenでincludeSchemaを使用しています)?

私の問題:

答えて

2

これは私が研究を行った後、このタスクを達成する方法です。これは期待通りに機能しました。ビルドファイルに以下を追加します。

buildscript { 

    dependencies { 
     classpath 'com.github.jacobono:gradle-jaxb-plugin:1.3.5' 
    } 
} 

apply plugin: 'com.github.jacobono.jaxb' 

dependencies { 

    jaxb 'com.sun.xml.bind:jaxb-xjc:2.2.7-b41' 
    jaxb 'com.sun.xml.bind:jaxb-impl:2.2.7-b41' 
    jaxb 'javax.xml.bind:jaxb-api:2.2.7' 
    jaxb "org.jvnet.jaxb2_commons:jaxb2-basics-ant:0.6.5" 
    jaxb "org.jvnet.jaxb2_commons:jaxb2-basics:0.6.4" 
    jaxb "org.jvnet.jaxb2_commons:jaxb2-basics-annotate:0.6.4" 
    jaxb "org.jvnet.jaxb2_commons:jaxb2-value-constructor:3.0" 
} 


jaxb { 

    System.setProperty('javax.xml.accessExternalSchema', 'all') //To solve external schema dependencies 
    xsdDir = "src/main/resources/schema/" //xsd directory 
    xjc { 
     taskClassname = "org.jvnet.jaxb2_commons.xjc.XJC2Task" // This is for setter plugin 
     args = ["-Xsetters","-Xsetters-mode=direct"] 
    } 
} 

「gradle xjc」を実行して、xsdファイルから関連するJavaファイルを生成する必要があります。

+0

うわー、あなたの答えに感謝します。私はこの質問を完全に忘れていた。今、私はあなたの答えをテストする方法がありませんが、私のケースでは、Mavenプラグインのコードを使ってカスタムGradleプラグインを作成してしまい、問題を解決しました – Farzad

関連する問題