CAS Maven Overlay和Spring Boot不能一起工作

问题描述 投票:0回答:1

我从spring.io创建一个spring boot应用程序,然后将AS依赖项添加到项目的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>

之后启动Spring启动应用程序,但CAS不会在spring启动应用程序中启动。这种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>

然后我创建一个Application类

@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);
}
}

通过这种配置,通过spring boot正常构建maven目标和执行项目。

maven spring-boot cas
1个回答
1
投票

CAS已经是一个Spring Boot Web应用程序。因此,请查看cas-server-webapp-init-6.0.1.jar并查看Cas Web Application.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应该作为Web应用程序启动。

为了进一步调查,我建议你从https://search.maven.org/artifact/org.apereo.cas/cas-server-webapp/6.0.1/war下载战争并用jd-gui之类的工具进行检查。

© www.soinside.com 2019 - 2024. All rights reserved.