Java 格雷蒂:重复片段名称:org\u apache\u jasper

Java 格雷蒂:重复片段名称:org\u apache\u jasper,java,spring,heroku,gradle,gretty,Java,Spring,Heroku,Gradle,Gretty,我使用gretty轻松运行dev服务器和webapprunner,以便部署到heroku 以下是我的gradle.build: buildscript { repositories { jcenter() } dependencies { classpath 'org.akhikhl.gretty:gretty:+' } } apply plugin: 'java' apply plugin: 'war' apply plugi

我使用gretty轻松运行dev服务器和webapprunner,以便部署到heroku

以下是我的
gradle.build

buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath 'org.akhikhl.gretty:gretty:+'
    }
}

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'eclipse-wtp'
apply plugin: 'idea'
apply plugin: 'org.akhikhl.gretty'

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    compile 'org.springframework:spring-webmvc:4.3.10.RELEASE'
    compile 'org.springframework:spring-orm:4.3.10.RELEASE'
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.0'
    compile group: 'org.hibernate', name: 'hibernate-core', version: '5.2.10.Final'
    compile group: 'org.apache.commons', name: 'commons-dbcp2', version: '2.1.1'
    compile group: 'mysql', name: 'mysql-connector-java', version: '6.0.6'
    compile group: 'org.hibernate.validator', name: 'hibernate-validator', version: '6.0.1.Final'
    compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.0'
    compile group: 'org.postgresql', name: 'postgresql', version: '42.1.4'

    compile 'com.github.jsimone:webapp-runner:8.5.11.3'

}

gretty {
    httpPort = 8080
    servletContainer = 'jetty9'
    contextPath = '/'
}

eclipse {
    wtp {
        component {
            contextPath = '/'
        }
    }
}

///////// Tasks for deployment to heroku

task stage() {
    dependsOn clean, war
}
war.mustRunAfter clean

task copyToLib(type: Copy) {
    dependsOn war
    into "$buildDir/server"
    from(configurations.compile) {
        include "webapp-runner*"
    }
}

stage.dependsOn(copyToLib)
如果删除webapp runner,一切都会正常运行,但在尝试启动gretty时会出现以下错误:

java.lang.IllegalStateException:重复的片段名称:org\u apache\u jasper for jar

我不是专家,但我认为这与gretty和webapp runner都下载了类似的文件这一事实有关,这导致了冲突


如果你能提供一些这方面的信息,我将不胜感激。我该怎么过这关?有没有更好的方法让dev server+能够部署到heroku?(可能两者都使用webapp runner?

我建议使用以下命令以与Heroku运行应用程序相同的方式在本地运行:

$ ./gradlew stage
$ heroku local web

如果您想使用gretty进行开发,您需要将webapp runner从您的开发版本中排除(可能使用
stageDev
任务),并将gretty从
stage
版本中排除。

是否可以从IDE调试“heroku local web”?是的,您可以将其视为远程进程(将调试选项添加到
java
命令,并从IDE使用远程连接)