Скажем, у меня есть две зависимости Maven, определенные в проекте, как показано ниже.Зависимость Maven в зависимости от другой области
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.3.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mycompany.library</groupId>
<artifactId>mylibrary</artifactId>
<version>1.0.1</version>
<scope>compile</scope>
</dependency>
Затем, в пределах моей библиотеки, у меня также есть зависимость, определенная ниже.
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.3.1</version>
<scope>compile</scope>
</dependency>
Когда я упаковываю свой проект, я не вижу xstream, упакованного внутри него. Я думаю, что область зависимости xstream проекта, «тест», переопределяет область зависимости xstream mylibrary, «компилирует».
В такой ситуации, как лучше всего включить xstream для всего проекта, чтобы подмодуль мог иметь к нему доступ при упаковке в проекте?
Я читал объяснение веб-сайта Apache Maven в отношении транзитивных зависимостей, но я изо всех сил пытаюсь понять, что это значит, а также узнать о лучшей практике в этой ситуации.
с сайта Apache Maven: - compile Это область по умолчанию, которая используется, если ни один не указан. Зависимости компиляции доступны во всех классах проекта. Кроме того, эти зависимости распространяются на зависимые проекты. –
Возможно, мой оригинальный вопрос вызвал путаницу, потому что я использовал «подмодуль». См. Мой отредактированный вопрос выше. –
Да, я больше интересовался областью тестирования. – aperkins