2014-09-15 6 views
0

У меня есть 2 проекта, employees и data. Проекты представляют собой объекты, связанные с моим db.Проекты Maven 2 зависят друг от друга

У каждого сотрудника есть поле, связанное со столом в data, и поэтому мой employee pom.xml имеет зависимость от данных. Моя проблема здесь, все данные вставляются сотрудником, и поэтому data также имеет зависимость от employees. Это приводит к двунаправленной зависимости.

Возможно ли это в maven? Мое понимание maven заключается в том, что это вызовет проблемы.

проект employees

@Entity 
@Table(name="employees", uniqueConstraints= { 
     @UniqueConstraint(columnNames="idEmployees"), 
     @UniqueConstraint(columnNames="idCardNumber"), 
     @UniqueConstraint(columnNames="niNumber") 
}) 
public class Employee { 

@Id 
@GeneratedValue 
@Column(unique=true, nullable=false, updatable=false) 
private int idEmployees; 

//other class variables 

@ManyToOne(cascade=CascadeType.PERSIST, fetch=FetchType.LAZY) 
@JoinColumn(name="niCategoryId", nullable=false, updatable=false) 
private NIData niCategory; 

//constructors getter and setters 
} 

data проект

@Entity 
@Table(name="nidata", uniqueConstraints= { 
     @UniqueConstraint(columnNames="idNiData") 
}) 
public class NIData { 

@Id 
@GeneratedValue 
@Column(unique=true, nullable=false, updatable=false) 
private int idNiData; 

//other class variables 

@ManyToOne(cascade=CascadeType.PERSIST, fetch=FetchType.LAZY) 
@JoinColumn(name="createdEmployeeId", nullable=false, updatable=false) 
private Employee createdEmployee; 

//constructors getter and setters 
} 

Как вы можете видеть, что они зависят друг от друга, но я хочу их в различных проектах, поскольку они принадлежат к разным схемам. Также я планирую добавить другие схемы, которые я, возможно, не захочу раскрывать в каждой части системы, которую я разрабатываю, но только ее части.

+0

У вас должен быть проект API, который, как я думаю, может повлиять на один или оба. –

ответ

1

Было бы разумнее поместить все связанные с сущностью классы в один модуль Maven. Таким образом, все классы могут зависеть друг от друга. Это также позволит централизовать все сохраненные классы, которые будут поддерживаться в одном проекте.

Действительно, Maven не допускает круговых зависимостей, так как он не знает, какой модуль будет строить первым.

+0

Я хочу разделить их по двум причинам 1) У них разные схемы 2) Я в конечном итоге добавлю больше схем, и я хочу предоставить их части для определенных частей кода. Я не хочу, чтобы все было доступно везде. По этой причине я использую разные проекты. –

+0

Я мало знаю о вашей модели данных, но даже если у них разные схемы баз данных, все же логичнее будет поместить их в один модуль. Что касается второй причины, я думаю, что в Maven есть способ генерировать «подпакет» вашего модуля. Поэтому, если проект зависит только от подмножества объектов, вы все равно сможете это сделать, даже если у вас есть все в одном модуле. Вы можете прочитать про профили и [как исключить контент из артефакта jar] (http://maven.apache.org/plugins/maven-jar-plugin/examples/include-exclude.html). – manouti

+1

Я думаю, что вы правы, было бы лучше, если бы они были в одном проекте под 1 единицю сохранения. Если они зависят друг от друга при экспонировании, мне нужно в любом случае разоблачить другое, или я могу получить ошибки. Спасибо! –

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