2015-10-19 2 views
0

Я разрабатываю приложение на двух разных платформах. Базовый код тот же, за исключением специального пакета, который зависит от платформы.
Как связать проект, сохраняя при этом только одну копию базового кода.
Проблемы заключаются в том, что api имеет зависимость от специального пакета, который не позволяет мне просто создавать 3 проекта, например Api, A, B, и связывать их, как показано ниже.Eclipse, связывающий общие коды

E.g. Proj A, Рго B, Рго API

Platform пакет, апи -> A приложение
Платформа B пакет, апи -> B приложение

ответ

0

Я вдруг вспомнил, что вы можете связать файлы с другим проектом.

Это проекты, которые я создал и как я их решил.

Project Base -> Base API (вы можете просто использовать папку, обратите внимание, если вы создаете проект, то это выдаст ошибку, поскольку зависимости отсутствуют) Project Platform A - пакеты> A Platform Project B -> в пакетах

Проект A API -> ссылки Base API файлы, включают в себя платформу A B API Project -> ссылки на файлы Base API, включают в себя платформу B

Теперь вы можете скомпилировать базовый API после включения недостающее платформенных пакетов.

2

Так что вы на самом деле есть, 2 различных API, и та же база код.

Common Code Base -> Api1 
Common Code Base -> Api2 

Одним из решений является использование одного проекта и построение его в соответствии с тем параметром, который вы передаете в сборку. Таким образом, вы поддерживаете один проект и одну базу кода, но вы все равно можете создавать оба решения в зависимости от того, что вы проходите. Вы можете сделать это, передав нужную версию в сборке. Если вы использовали Maven для создания своего проекта, вы могли бы использовать переменную для разграничения между двумя платформами.

Это может выглядеть как этот

<project> 
    ... 
    <properties> 
    <platformVerion>platformA</platformVerion> 
    </properties> 
    <dependencies> 
    <dependency> 
     <groupId>com.mycompany</groupId> 
     <artifactId>myartifact</artifactId> 
     <version>${platformVerion}</version> 
    </dependency> 
    </dependencies> 
    ... 
</project> 

Maven показывает вам, как сделать это здесь.

https://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Available_Variables

В то время как они имеют в виду нумерованного версии в этой сборке, вы можете сделать это все, что вы хотите, в том числе и Platforma plateformB.

Теперь у вас по-прежнему возникает проблема, когда код извлекается из двух разных API-интерфейсов, которые используются. Это может храниться локально в вашей системе или в локальном репозитории, таком как Lexis. Для локально сохраненного кода вы можете использовать Maven's System Dependencies для управления этим.

https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

Или еще лучше, если у вас есть свой собственный локальный репозиторий для компании, как Lexus, поставить две версии там и просто указать на них соответствующим образом.

Надеюсь, это поможет.