Подтвердить что ты не робот

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.

4b9b3361

Ответ 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 снова загрузить его при запуске тестов.