2012-06-25 6 views
4

У меня есть настройка в моем файле POM. Особенно конфигурация jaxb-fluent-api.Что ниже настроек означает (jaxb-fluent-api)?

<plugin> 
    <groupId>org.jvnet.jaxb2.maven2</groupId> 
    <artifactId>maven-jaxb2-plugin</artifactId> 
    <configuration> 
     <extension>true</extension> 
     <args> 
      <arg>-Xfluent-api</arg> 
     </args> 
     <schemaDirectory>src/main/resources</schemaDirectory> 
     <plugins> 
      <plugin> 
       <groupId>net.java.dev.jaxb2-commons</groupId> 
       <artifactId>jaxb-fluent-api</artifactId> 
       <version>2.1.8</version> 
      </plugin> 
     </plugins> 
    </configuration> 
    <executions> 
     <execution> 
      <goals> 
       <goal>generate</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

Без настройки объектов jaxb-fluent-api могут быть сгенерированы из xsd. вот что такое benifits, используя jaxb-fluent-api?

Спасибо!

ответ

4

jaxb-fluent-api является расширением JAXB, позволяющим сгенерировать код в беглого api. Теперь fluent api - это способ разработки ваших методов класса, поэтому они всегда возвращают this вместо void.

Существует хороший пример на project wiki (Я сократил его немного для краткости, посетить the site для полного примера):

Нормального JAXB -порожденного кода должен использоваться как это:

Project project = factory.createProject(); 

project.setModelVersion("4.0.0"); 
project.setGroupId("redmosquito") 
project.setArtifactId("jaxb-fluent-api-ext") 
project.setPackaging("jar") 
project.setVersion("0.0.1") 
project.setName("JAXB Fluent API Extensions"); 

С jaxb-fluent-api расширением, вы можете закодировать выше, как это:

Project project = factory.createProject() 
    .withModelVersion("4.0.0"); 
    .withGroupId("redmosquito") 
    .withArtifactId("jaxb-fluent-api-ext") 
    .withPackaging("jar") 
    .withVersion("0.0.1") 
    .withName("JAXB Fluent API Extensions"); 

это в основном то, что fluent api - все о.

+0

Я знаю, что ответ не о ['net.java.dev.jaxb2-commons' вкус' jaxb-fluent-api'] (http://search.maven.org/#artifactdetails|net.java. dev.jaxb2-commons | jaxb-fluent-api | 2.1.8 | jar), как упоминалось в вопросе. Это потому, что проект, кажется, уже мертв (веб-страница не отвечает). Речь идет о библиотеке под названием [jaxb-fluent-api-ext'] (http://code.google.com/p/jaxb-fluent-api-ext/), которая размещена в коде Google и в основном делает то же самое вещь. Я думаю, что это не имеет особого значения для первоначального вопроса, поскольку основной quastion был о беглой api, а не самой библиотеке. – npe

Смежные вопросы