Мы пытаемся избежать дублирования кода в проекте, где Java и Python используются вместе. Большая часть базы кода находится на Java, а теперь добавляется Python из-за распространенности в среде машинного обучения.
В сценарии с зеленым полем мы начнем с sth. как взрослое или протобуф, и выводить модели из сгенерированного кода. Но теперь это не работает.
J-классы аннотируются некоторыми аннотациями и нацелены на Java 8.
Во время исследования я нашел следующий возможный путь, чтобы превратить структуру (без методов) классов в структуры классов Python:
- Создание XML-схем из классов Java
- Создание классов Python из файлов схемы xml
Дополнительное преимущество: два языка фактически взаимодействуют через XML в нашем проекте, поэтому файлы схемы полезны для других случаев использования. Мы используем maven для сборки Java, поэтому было бы неплохо включить его в процесс maven.
Я включил это в pom.xml:
<!-- https://mvnrepository.com/artifact/org.codehaus.mojo/jaxb2-maven-plugin -->
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.3.1</version>
</dependency>
а также конфигурацию плагинов по умолчанию
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<executions>
<execution>
<id>schemagen</id>
<goals>
<goal>schemagen</goal>
</goals>
</execution>
</executions>
<!--
Use default configuration, implying that sources are read
from the directory src/main/java below the project basedir.
(i.e. getProject().getCompileSourceRoots() in Maven-speak).
-->
</plugin>
Но я получаю сообщение об ошибке
[ERROR] Failed to execute goal org.codehaus.mojo:jaxb2-maven-plugin:2.3.1:schemagen (default-cli) on project common: JAXB errors arose while SchemaGen compiled sources to XML. -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:jaxb2-maven-plugin:2.3.1:schemagen (default-cli) on project common: JAXB errors arose while SchemaGen compiled sources to XML.
Затем я заглянул в JSON Schemas в качестве посредника, но это также на самом деле не режет его, потому что нелегко создать исходный код класса Python из схем JSON.
Так есть ли способ генерировать простые "Pojo" классы Python из Java-кода? Никаких методов, сложной кросс-компиляции, а простого структурного преобразования. Я могу генерировать UML-диаграммы из файлов Java в IntelliJ, поэтому вся информация есть, мне нужен инструмент, который помогает конвертировать