Чем отличается компиляция от предоставленной - PullRequest
0 голосов
/ 17 апреля 2019

Когда я установил <scope> на provided, мое приложение не работало.Однако когда он был скомпилирован, он работает.Не могли бы вы объяснить, чем они отличаются.

Это класс tileConfig для установки пути.

@Configuration
public class TilesConfig {

    @Bean
    public ViewResolver viewResolver() {
        UrlBasedViewResolver viewResolver = new UrlBasedViewResolver();
        viewResolver.setViewClass(TilesView.class);
        return viewResolver;
    }

    @Bean
    public TilesConfigurer tilesConfigurer() {
        TilesConfigurer tilesConfigurer = new TilesConfigurer();
        tilesConfigurer.setDefinitions("/WEB-INF/tiles.xml");

        return tilesConfigurer;
}

, и я добавил зависимости для Apache Tiles 3 и JSP.Поскольку встроенный сервер (tomcat) в Spring Boot не поддерживает JPS.

После pom.xml работает, но когда я добавляю <scope>, как указано в tomcat-embed-jasper.Не работает:

    <!-- Apache Tiles 3 -->
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-jsp</artifactId>
        <version>3.0.8</version>
    </dependency>

    <!-- JSP -->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>

Ответы [ 2 ]

1 голос
/ 17 апреля 2019

Если вы задаете область, как указано, вы говорите, что ожидаете, что JDK или контейнер предоставят зависимость во время выполнения.Эта зависимость отсутствует там, поэтому она не может найти ее.

  • compile является областью по умолчанию - эти зависимости доступны во всех путях классов проекта
  • при условии - эти зависимости должны присутствовать в вашей среде
  • время выполнения - не обязательно для компиляции, но должно присутствовать для времени выполнения
  • test - требуется для тестов
  • system - как и предусмотрено, но вам необходимо предоставить jar файл
1 голос
/ 17 апреля 2019

provided означает, что вы ожидаете, что контейнер (Tomcat) предоставит зависимость. Предоставленные зависимости используются для компиляции, но не упакованы в ваше приложение.

compile зависимости упакованы в ваше приложение.

...