当前位置: 首页 > 知识库问答 >
问题:

Gradle Ear插件不应将资源复制到。耳根

柴亦
2023-03-14

我的gradle模块有以下文件夹结构:

src
    main
        application
            META-INF
                application.xml
                was.policy
                was.webmodule
        java
        resources
            image.bmp
            logback.xml
            ... other files, properties
        webapp

我的目标是建立一个ear存档,它只包含Tclient。war和META-INF。然而,gradle将所有资源文件复制到ear根目录。

Gradle留档关于耳朵插件说:

Ear任务的默认行为是将src/main/application的内容复制到归档文件的根目录。如果应用程序目录不包含META-INF/application。然后会为您生成一个xml部署描述符。

所以,它为什么把资源放在根中还不太清楚。也许,它的工作原理就像org。格雷德尔。应用程序编程接口。任务。捆绑。Jar任务,我应该以某种方式重写这种行为吗?

这是我的部分构造。gradle文件:

jar {
    description 'Creates tclient.jar'
    archiveBaseName = 'tclient'
    destinationDirectory = file('src/main/webapp/WEB-INF/lib')
    from sourceSets.main.output
    include '**/*'
    include '**/*.properties'
    include '**/*.cmd'
}

ear{
    description = "Ear archive for WebSphere server"
    archiveBaseName = 'Tclient'
    appDirName('src/main/application')

    // workaround to exclude classes from ear root
    rootSpec.exclude('**/de/**')
    rootSpec.exclude('**/org/**')
}

war {
    archiveFileName  = 'Tclient.war'
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
    webInf {
        from configurations.natives into 'lib/bin'
    }

    // do not put compiled classes inside WEB-INF/classes
    rootSpec.exclude('**/de/**')
    rootSpec.exclude('**/org/**')
    rootSpec.exclude('urlrewrite*.dtd')

    from(jar) {
        into 'WEB-INF/lib'
    }

}


dependencies {
    // Place .war inside .ear root
    deploy files(war)
    ....
}

共有1个答案

赫连瑾瑜
2023-03-14

可能的解决方法是从rootspec中排除冗余资源:

ear{
    description = "Ear archive for WebSphere server"
    archiveBaseName = 'Tclient'
    appDirName('src/main/application')

    // workaround to exclude classes from ear root
    rootSpec.exclude('**/de/**')
    rootSpec.exclude('**/org/**')
    
    // workaround 
    rootSpec.exclude('*.properties')
    rootSpec.exclude('*.xml')
    rootSpec.exclude('*.dtd')
    rootSpec.exclude('*.bmp')
}

然而,我发现这个解决方案有点丑陋,而且是一个肮脏的黑客。

 类似资料:
  • 我试图在构建时使用maven资源插件复制xml文件,但到目前为止没有成功。 Maven目标-干净安装 它需要任何特殊的maven目标来复制东西吗?请帮帮我。 插件版本 提到这个

  • 我正在尝试使用maven resources插件复制文件夹或以下结构: 项目目录和. gitignore文件被复制,但是。元数据目录由于某种原因被遗漏了。 如何复制根文件夹的所有内容? 以下是我尝试过的配置:

  • 在我的项目中,我创建了以下目录结构 在我的pom.xml我做了以下记录 如果我复制src中的资源- 如何使联调也将资源中的文件复制到目标中?

  • 我使用grails已经快一年了。从现在开始,我想在gsp中链接css或js文件。我做了以下几件事: > 我在web-app文件夹下创建了一个新文件(例如资源文件),并将所有文件夹放在那里(例如导入bootstrap时,我在资源下有一个父文件夹bootstrap,在bootstrap下有css、img和js文件夹及其文件)。 然后,为了导入一个css文件,我做了以下操作(以下是相关文档): 这非常有

  • 以下 是对开发kibana 插件有用的资源 IRC channel kibana 官方为大家注册了一个类似聊天室的通道,在这里大家可以获取有用咨询和交流 Freenode Web Client. 文章 contributing guide kibana-plugin-notes(强烈推荐阅读) 视频 Contributors Guide to the Kibana Galaxy Kibana Pl

  • 我正在使用maven-resource-plugin 2.6 vith maven 3.0.5(也尝试了3.0.4)。 我有不同的处决: 当我把下面的方块 在我的内部 我需要把它放进去 这是一个问题吗?因为当我启动构建时,我的pom.xml没有错误。