CAS Maven Overlay и Spring Boot не работают вместе - PullRequest
0 голосов
/ 11 февраля 2019

Я создаю весеннее загрузочное приложение из spring.io, затем добавляю зависимость CAS в pom-файл проекта, как показано ниже.

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apereo.cas</groupId>
        <artifactId>cas-server-webapp</artifactId>
        <version>${cas.version}</version>
        <type>war</type>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>${h2.version}</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <overlays>
                    <overlay>
                        <groupId>org.apereo.cas</groupId>
                        <artifactId>cas-server-webapp</artifactId>
                    </overlay>
                </overlays>
            </configuration>
        </plugin>
    </plugins>
</build>

после этого запустите приложение весенней загрузки, но CAS не запускается в приложении весенней загрузки.Какова основная проблема в этом использовании CAS?Является ли метод использования CAS на этом пути неправильным?

_____________________________________________________________

В конце концов, я решил свою проблему.Я изменяю файл pom, как показано ниже

    <modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.2.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
    <javaparser-core.version>3.12.0</javaparser-core.version>
    <start.class>org.apereo.cas.web.CasWebApplication</start.class>
    <start.class2>x.y.sso.SingleSignOnApplication</start.class2>
    <h2.version>1.4.197</h2.version>
    <cas.version>6.0.1</cas.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apereo.cas</groupId>
        <artifactId>cas-server-webapp-tomcat</artifactId>
        <version>${cas.version}</version>
        <type>war</type>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>com.github.javaparser</groupId>
        <artifactId>javaparser-core</artifactId>
        <version>${javaparser-core.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apereo.cas</groupId>
        <artifactId>cas-server-core-configuration</artifactId>
        <version>${cas.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apereo.cas</groupId>
        <artifactId>cas-server-core-configuration</artifactId>
        <version>${cas.version}</version>
    </dependency>
</dependencies>

<build>
    <finalName>cas</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <mainClass>${start.class2}</mainClass>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
                <!--<recompressZippedFiles>false</recompressZippedFiles>-->
                <archive>
                    <compress>false</compress>
                    <manifestFile>
                        ${project.build.directory}/war/work/org.apereo.cas/cas-server-webapp-tomcat/META-INF/MANIFEST.MF
                    </manifestFile>
                </archive>
                <overlays>
                    <overlay>
                        <groupId>org.apereo.cas</groupId>
                        <artifactId>cas-server-webapp-tomcat</artifactId>
                    </overlay>
                </overlays>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
        </plugin>
    </plugins>
</build>

, затем создаю класс приложения

@EnableDiscoveryClient
@SpringBootApplication(exclude = {
    HibernateJpaAutoConfiguration.class,
    JerseyAutoConfiguration.class,
    JmxAutoConfiguration.class,
    DataSourceAutoConfiguration.class,
    DataSourceHealthIndicatorAutoConfiguration.class,
    RedisAutoConfiguration.class,
    MongoAutoConfiguration.class,
    MongoDataAutoConfiguration.class,
    CassandraAutoConfiguration.class,
    DataSourceTransactionManagerAutoConfiguration.class,
    RedisRepositoriesAutoConfiguration.class})
@EnableConfigurationProperties({CasConfigurationProperties.class})
@EnableAsync
@EnableTransactionManagement(proxyTargetClass = true)
@EnableScheduling  
public class SingleSignOnApplication {
    public static void main(String[] args) {
       SpringApplication.run(SingleSignOnApplication.class, args);
}
}

с помощью этой конфигурации, правильно собираю цель maven и проект выполнения с помощью весенней загрузки.

1 Ответ

0 голосов
/ 11 февраля 2019

CAS уже является веб-приложением с весенней загрузкой.Для этого загляните в cas-server-webapp-init-6.0.1.jar и посмотрите CasWebApplication.java.

@EnableDiscoveryClient
@SpringBootApplication(exclude={HibernateJpaAutoConfiguration.class, JerseyAutoConfiguration.class, GroovyTemplateAutoConfiguration.class, JmxAutoConfiguration.class, DataSourceAutoConfiguration.class, DataSourceHealthIndicatorAutoConfiguration.class, RedisAutoConfiguration.class, MongoAutoConfiguration.class, MongoDataAutoConfiguration.class, CassandraAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, RedisRepositoriesAutoConfiguration.class})
@EnableConfigurationProperties({CasConfigurationProperties.class})
@EnableAsync
@EnableTransactionManagement(proxyTargetClass=true)
@EnableScheduling
public class CasWebApplication
{
  public static void main(String[] args)
  {
    Map<String, Object> properties = CasEmbeddedContainerUtils.getRuntimeProperties(Boolean.TRUE);
    Banner banner = CasEmbeddedContainerUtils.getCasBannerInstance();
    new SpringApplicationBuilder(new Class[] { CasWebApplication.class })
      .banner(banner)
      .web(WebApplicationType.SERVLET)
      .properties(properties)
      .logStartupInfo(true)
      .contextClass(CasWebApplicationContext.class)
      .run(args);
  }
}

Удалите зависимости spring-boot-starter , и CAS должен запуститься как веб-приложение.

Для дальнейшего изучения я бы порекомендовал вам скачать войну с https://search.maven.org/artifact/org.apereo.cas/cas-server-webapp/6.0.1/war и проверить ее с помощью такого инструмента, как jd-gui.

...