Что происходит в проекте HyperJaxb3?

Я понимаю, что библиотека Hyperjaxb3 будет весьма полезна для моего проекта, прочитал пару описаний на нескольких сайтах и ​​решил внедрить ее в свой проект Spring-Hibernate.

Я нашел ссылку на Hyperjaxb3 в https://jaxb.java.net/, которая выглядит довольно официально, но гиперссылка - http://confluence.highsource.org/display/HJ3/Home - не открывается.

Я нашел несколько старых примеров POM, включил их в свой проект и нашел некоторые ссылки на старые версии, попытался их устранить, но сейчас кажется, что я сталкиваюсь с зависимостью от старой версии Hibernate, ошибка похожа на это:

java.util.ServiceConfigurationError: com.sun.tools.xjc.Plugin: не удалось создать экземпляр поставщика org.jvnet.hyperjaxb3.hibernate.plugin.HibernatePlugin: java.lang.NoClassDefFoundError: org/hibernate/type/MutableType

Мне интересно, есть ли лучшая запись Maven, жив ли проект и как мне использовать его с модером Hibernate.

Это моя выдержка из pom о Hyperjaxb3, где я исключаю некоторые устаревшие ссылки и указываю последние версии других зависимостей:

    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-core</artifactId>
        <version>${jaxb-version}</version>
    </dependency>        
    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-xjc</artifactId>
        <version>${jaxb-version}</version>
    </dependency>  
    <!--<dependency>
        <groupId>org.jvnet.hyperjaxb3</groupId>
        <artifactId>hyperjaxb3</artifactId>
        <version>0.6.1</version>
    </dependency>        -->
    <dependency>
        <groupId>org.jvnet.hyperjaxb3</groupId>
        <artifactId>hyperjaxb3-hibernate-plugin</artifactId>
        <version>0.1</version>
        <exclusions>
            <exclusion>
                <groupId>hsqldb</groupId>
                <artifactId>hsqldb</artifactId>
            </exclusion>
            <exclusion>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
            </exclusion>
            <exclusion>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
            </exclusion>
            <exclusion>
                <groupId>net.sf.saxon</groupId>
                <artifactId>saxon</artifactId>
            </exclusion>
            <exclusion>
                <groupId>net.sf.saxon</groupId>
                <artifactId>saxon-dom</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-xjc</artifactId>
            </exclusion>
        </exclusions>
    </dependency>  
    <dependency>
        <groupId>asm</groupId>
        <artifactId>asm</artifactId>
        <version>3.3.1</version>
    </dependency>
    <dependency>
        <groupId>asm</groupId>
        <artifactId>asm-attrs</artifactId>
        <version>2.2.3</version>
    </dependency>
    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>3.2.1</version>
    </dependency>

    <dependency>
        <groupId>commons-beanutils</groupId>   
        <artifactId>commons-beanutils</artifactId>
        <version>1.9.2</version>
    </dependency>
    <dependency>
        <groupId>commons-lang</groupId>   
        <artifactId>commons-lang</artifactId>
        <version>2.6</version>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>   
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
    </dependency>

В настоящее время я не пытаюсь генерировать аннотированные классы сущностей Hibernate, а POJO из примера PurchaseOdrer. Это то, что я сейчас делаю:

public void initializeModel(String name, InputStream src, String dir) throws IOException, URISyntaxException{
    dir = Paths.get(new URL(dir).toURI()).toString();
    File directory = new File(dir);
    directory.mkdirs();

    SchemaCompiler sc = XJC.createSchemaCompiler();
    sc.setDefaultPackageName(this.getClass().getPackage().getName() + ".generated");

    InputSource is = new InputSource(src);
    is.setSystemId(name);

    sc.parseSchema(is);
    S2JJAXBModel model = sc.bind();
    JCodeModel codeModel = model.generateCode(null, null);

    CodeWriter cw = new FileCodeWriter(directory);        
    codeModel.build(cw);
}

person fedd    schedule 14.03.2016    source источник


Ответы (1)


Отказ от ответственности: я являюсь автором Hyperjaxb3.

Проект размещен на GitHub:

Последняя версия 0.6.1 работоспособна, работает как надо.

Тем не менее, я больше не развиваю его активно.

Будет ли это работать с текущей версией спящего режима?

Версия 0.6.1 работает с Hibernate 4.1.7. HJ3 — это просто генератор кода, который создает стандартные классы с аннотациями JPA. Так что шансы на то, что он будет работать с последними версиями Hibernate, довольно высоки.

Я просто не могу получить банку 0.6.1 от Maven. Похоже, он был удален из репозиториев maven.

Действительно? Все еще там.

http://repo1.maven.org/maven2/org/jvnet/hyperjaxb3/hyperjaxb3-ejb-plugin/0.6.1/

Я не понимаю, нужен ли мне «hyperjaxb3-hibernate-plugin» 0.1 2011 года.

Вы определенно не знаете.

Или вы знаете какой-нибудь форк или аналог?

К сожалению, ничего не приближается.

person lexicore    schedule 14.03.2016
comment
Спасибо! Пара вопросов, извините. Будет ли это работать с текущей версией спящего режима? - person fedd; 14.03.2016
comment
это интересно. Я просто не могу получить банку 0.6.1 от Maven. Похоже, он был удален из репозиториев maven. Я не понимаю, нужен ли мне hyperjaxb3-hibernate-plugin 0.1 от 2011 года. Или вы знаете какой-нибудь форк или аналог? Спасибо! - person fedd; 14.03.2016
comment
Еще раз спасибо, есть ли пример того, как можно сгенерировать код jpa из файлов xsd в обычном весеннем приложении webmvc? Мне не удалось найти в Интернете. - person fedd; 15.03.2016
comment
Я вижу это gerardnico.com/wiki/language/java/hyperjaxb, но я имею в виду программно , без maven, ant и т. д., как показано в моем вопросе. Я понимаю, что мне нужно указать какой-то плагин в вызове метода generateCode, но какой? - person fedd; 15.03.2016
comment
@fedd Вы не генерируете код в обычном приложении Sping WebMVC. Генерация кода — это шаг процесса сборки. Ну, вы можете сделать это во время выполнения (и скомпилировать его потом), но для меня это запускает все возможные сигналы тревоги. - person lexicore; 15.03.2016
comment
Я уже генерирую код во время выполнения с помощью Jaxb, я буду признателен, если вы подскажете мне, как сделать то же самое, чтобы сгенерированный код был определениями объектов JPA. (Я сам узнаю, как скомпилировать и загрузить классы) - person fedd; 15.03.2016
comment
@fedd Вот старый фрагмент кода, который может быть полезен: github.com/highsource/hyperjaxb3/blob/master/misc/dynamic/src/ - person lexicore; 15.03.2016
comment
спасибо, я уже несколько часов размышляю над этим... но, кажется, он ничего не использует от hyperjaxb3. Не видно, где он создает JPA-совместимый код - person fedd; 15.03.2016
comment
См. эти строки, где включен плагин HJ3. Во всяком случае, это далеко за ваш первоначальный вопрос. - person lexicore; 16.03.2016
comment
@lexicore Документация похожа на ту, что раньше была на confluence.highsource.org/display/HJ3/Home все еще существуют? - person Appak; 11.08.2016
comment
@lexicore - меня также интересует реплика confluence с сайта highsource.org, ее можно где-нибудь взять? - person kensai; 29.08.2017
comment
Я попытаюсь снова запустить этот старый сервер, но я понятия не имею, как защитить контент Confluence. - person lexicore; 29.08.2017