Maven Thrift плагин - Как я могу включить определения Thrift?

1

В настоящее время я использую maven-trift-plugin для создания баннеров и jsnode автоматически во время сборки. Я успешно могу скомпилировать и развернуть определения и использовать их в другом проекте. Но теперь мне нужно, чтобы этот другой проект определял собственный тип бережливости, который включает в себя другие определения, и я не вижу, как это сделать с помощью автоматизированного способа. Пример:

У меня есть проект Foo. Он в нем собственный git repo FooGitRepo и производит maven artifact FooMvnArtifact в com.example.foo. В Foo у меня есть что-то вроде "src/thrift/foo.thrift", который определяет FooType в пакете com.example.foo. Все идет нормально.

Pom для плагина выглядит так:

       <plugin>
            <groupId>org.apache.thrift.tools</groupId>
            <artifactId>maven-thrift-plugin</artifactId>
            <version>0.1.11</version>
            <configuration>
                <thriftExecutable>${project.basedir}/compiler/thrift-0.9.1</thriftExecutable>
                <thriftSourceRoot>${basedir}/src</thriftSourceRoot>
            </configuration>
            <executions>
                <execution>
                    <id>generate-thrift-java</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <generator>java</generator>
                        <outputDirectory>
                            gen-java
                        </outputDirectory>
                        <compileOutput>true</compileOutput>
                    </configuration>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>
                <execution>
                    <id>generate-thrift-jsnode</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <generator>js:node</generator>
                        <outputDirectory>
                            gen-jsnode
                        </outputDirectory>
                        <compileOutput>false</compileOutput>
                    </configuration>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>
                <execution>
                    <id>thrift-test-sources</id>
                    <phase>generate-test-sources</phase>
                    <goals>
                        <goal>testCompile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

Это дает результаты в артефактах, подходящих для указанных языков.

В моем втором проекте Bar, который находится в своем собственном git repo, имеет свой собственный maven repo, я использую Foo в java. Это очень просто. Я просто помещал FooMvnArtifact в раздел зависимости Bar pom. Тогда в java-коде все, что мне нужно сделать, это import com.example.foo.FooType. Но теперь я хочу добавить Bar.thrift с BarType, который содержит FooType в качестве члена. Это означает, что Bar.thrift необходимо include Foo.thrift. Но это не видно из Bar, потому что maven repo содержит только специфические для языка артефакты компиляции бережливости, а не само определение.

Как я могу заставить репозиторий Foo maven включать определение бережливости? Как я могу заставить Bar зависеть от этого определения таким образом, что я могу включить его в другое определение бережливости? Предпочтительно я могу сделать это таким образом, чтобы избежать конфликтов имен, если в будущем у меня будет несколько CommonType.thrift. Мне нужно импортировать из разных проектов.

В будущем это, скорее всего, произойдет и в контексте буферов протоколов. Я ожидал бы, что решения будут похожи.

Теги:
maven
thrift

1 ответ

0

Когда maven-thrift-plugin выполняет процесс генерации источников,
1. он копирует все зависимые файлы trift во временный каталог
2. зависимые файлы экономии находятся из артефактов зависимости от компиляции проекта (которые могут быть файлом артефакта jar, zip или другого типа)

Вам просто нужно добавить проект, который содержит файл экономии зависимостей, в текущую зависимость от компиляции проекта.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню