Maven compile: пакета не существует
У меня есть (по-видимому) простая проблема с maven, которую я не могу решить. В моей POM я указал зависимость от openrdf-sesame следующим образом:
<dependency>
<groupId>org.openrdf.sesame</groupId>
<artifactId>sesame-runtime</artifactId>
<version>2.7.2</version>
</dependency>
Запуск проекта из eclipse хорошо работает, я даже могу экспортировать исполняемый файл jar.
К сожалению, я не могу заставить его работать правильно через cmd-line maven.
Чтобы построить банку, я добавил следующее моему моменту:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>foo.bar.Cli</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
Сбой компиляции со следующими ошибками:
.../PLDReducer.java:[25,29] package org.openrdf.rio.rdfxml does not exist
.../PLDReducer.java:[27,33] package org.openrdf.sail.nativerdf does not exist
.../LowPLDReducer.java:[25,29] package org.openrdf.rio.rdfxml does not exist
.../Cli.java:[23,33] package org.openrdf.sail.nativerdf does not exist
.../SchemaBuilder.java:[30,33] package org.openrdf.sail.nativerdf does not exist
.../RepoQuerier.java:[23,33] package org.openrdf.sail.nativerdf does not exist
.../PLDReducer.java:[78,44] cannot find symbol
Как ни странно, как только я добавлю плагин компиляции к настройкам проекта pom и update, скорее всего, компиляция eclipse тоже не скомпилируется. Я проверил мой репозиторий, и все файлы кунжута находятся там.
mvn --version дает этот результат:
Apache Maven 2.2.1 (rdebian-8)
Java version: 1.6.0_27
Java home: /usr/lib/jvm/java-6-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux" version: "3.8.0-25-generic" arch: "amd64" Family: "unix"
Я вижу, что это похоже на jre, но мой googling указал, что я увижу еще одну ошибку, если сам компилятор не будет найден.
Я вставлял полный POM здесь, если это поможет.
Есть ли что-нибудь, чего я не вижу? Я не могу найти ошибок в моей POM.
Ответы
Ответ 1
Вы должны добавить следующую зависимость в свою сборку:
<dependency>
<groupId>org.openrdf.sesame</groupId>
<artifactId>sesame-rio-api</artifactId>
<version>2.7.2</version>
</dependency>
Кроме того, я бы предложил глубоко изучить документацию о том, как использовать lib.
Ответ 2
Вы не включаете тег <scope>
в свою зависимость. Если вы добавите его, ваша зависимость станет примерно такой:
<dependency>
<groupId>org.openrdf.sesame</groupId>
<artifactId>sesame-runtime</artifactId>
<version>2.7.2</version>
<scope> ... </scope>
</dependency>
Тег "scope" указывает maven, на каком этапе сборки требуется ваша зависимость. Примеры значений, которые нужно ввести внутри, - это "тест", "предоставленный" или "время выполнения" (опускайте кавычки в вашем помпе). Я не знаю вашу зависимость, поэтому я не могу сказать вам, какую ценность выбрать. Обратитесь к документации Maven и документации по вашей зависимости.
Ответ 3
Не уверен, было ли повреждение файла или что, но после подтверждения правильной конфигурации pom я смог решить эту проблему, удалив банку из моего локального репозитория m2, заставив Maven снова загрузить его при запуске тестов.