- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 war 项目(项目 A),它对另一个包含共享库的项目(项目 B)有编译依赖关系,但是我不希望项目 B 的传递依赖项包含在 WTP 部署中。
当我使用 gradle 生成 war 文件时,项目 B 的传递依赖项被忽略,因为我想,但是 WTP 不断将所有库复制到/WEB-INF/lib 目录中,因此我有类加载器问题。
我试图使用 transitive = false
忽略来自项目 B 的传递依赖项并忽略特定的依赖项 exclude
到目前为止,在依赖项和配置级别都没有成功,我找不到我做错了什么。
提前致谢。
我的配置如下:
项目A
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'eclipse-wtp'
apply plugin: 'war'
repositories {
mavenLocal()
mavenCentral()
maven { // ext release
url "${artifactory_contextUrl}/ext-release-local"
credentials {
username = "${artifactory_user}"
password = "${artifactory_password}"
}
}
maven { // libs release
url "${artifactory_contextUrl}/libs-release-local"
credentials {
username = "${artifactory_user}"
password = "${artifactory_password}"
}
}
maven { // libs snapshot
url "${artifactory_contextUrl}/libs-snapshot-local"
credentials {
username = "${artifactory_user}"
password = "${artifactory_password}"
}
}
maven { // SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases
url "http://repository.springsource.com/maven/bundles/release" }
maven { // SpringSource Enterprise Bundle Repository - External Bundle Releases
url "http://repository.springsource.com/maven/bundles/external" }
maven { // SpringSource Enterprise Bundle Repository - SpringSource Library Releases
url "http://repository.springsource.com/maven/libraries/release" }
maven { // SpringSource Enterprise Bundle Repository - External Library Releases
url "http://repository.springsource.com/maven/libraries/external" }
}
group = 'com.thisproject'
sourceCompatibility = '1.6'
version = '1.6'
war {
baseName = 'ROOT'
archiveName = baseName+'.'+extension
destinationDir = file('build/')
}
task deployToFolder(dependsOn: 'war') << {
copy {
from war.archivePath
into "${deployFolder}"
}
}
task jenkinsTest{
inputs.files test.outputs.files
doLast{
def timestamp = System.currentTimeMillis()
test.testResultsDir.eachFile { it.lastModified = timestamp }
}
}
build.dependsOn(jenkinsTest)
configurations {
runtime.exclude group: 'commons-validator', module: 'commons-validator'
runtime {
transitive = false
}
}
dependencies{
providedCompile group: 'log4j', name: 'log4j', version: '1.2.16'
providedCompile group: 'org.springframework.security', name: 'org.springframework.security.web', version: '3.1.1.RELEASE'
providedCompile group: 'org.springframework.security', name: 'spring-security-config', version: '3.1.1.RELEASE'
providedCompile group: 'org.springframework.social', name: 'spring-social-web', version: '1.0.2.RELEASE'
providedCompile group: 'org.springframework.social', name: 'spring-social-core', version: '1.0.2.RELEASE'
providedCompile group: 'org.springframework.social', name: 'spring-social-facebook', version: '1.0.1.RELEASE'
providedCompile group: 'org.springframework.social', name: 'spring-social-twitter', version: '1.0.2.RELEASE'
providedCompile group: 'spring-social-google', name: 'spring-social-google', version: '1.0'
providedCompile group: 'jstl', name: 'jstl', version: '1.2'
providedCompile group: 'org.springframework.security', name:'org.springframework.security.taglibs', version:'3.1.1.RELEASE'
compile(project(':projectB')) {
exclude module:'commons-validator'
transitive = false
}
providedCompile group: 'javax.servlet', name: 'servlet-api', version: '2.5'
providedCompile group: 'javax.servlet', name: 'jsp-api', version: '2.0'
providedCompile group: 'org.springframework', name: 'org.springframework.transaction', version: '3.1.1.RELEASE'
providedCompile group: 'commons-validator', name: 'commons-validator', version: '1.2.0'
providedCompile group: 'commons-lang', name: 'commons-lang', version: '2.4'
providedCompile group: 'javax.validation', name: 'validation-api', version: '1.0.0.GA'
providedCompile 'javax.persistence:persistence-api:1.0.2'
providedCompile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.10.Final'
}
eclipse {
project { natures 'org.springsource.ide.eclipse.gradle.core.nature' }
wtp {
component { deployName = 'ROOT' }
facet {
facet name: 'jst.web', version: '2.5'
facet name: 'jst.java', version: '1.6'
}
}
}
compileJava {
options.encoding = "UTF-8"
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'maven'
repositories {
mavenLocal()
mavenCentral()
maven { // ext release
url "${artifactory_contextUrl}/ext-release-local"
credentials {
username = "${artifactory_user}"
password = "${artifactory_password}"
}
}
maven { // libs release
url "${artifactory_contextUrl}/libs-release-local"
credentials {
username = "${artifactory_user}"
password = "${artifactory_password}"
}
}
maven { // libs snapshot
url "${artifactory_contextUrl}/libs-snapshot-local"
credentials {
username = "${artifactory_user}"
password = "${artifactory_password}"
}
}
maven { // SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases
url "http://repository.springsource.com/maven/bundles/release"
}
maven { // SpringSource Enterprise Bundle Repository - External Bundle Releases
url "http://repository.springsource.com/maven/bundles/external"
}
maven { // SpringSource Enterprise Bundle Repository - SpringSource Library Releases
url "http://repository.springsource.com/maven/libraries/release"
}
maven { // SpringSource Enterprise Bundle Repository - External Library Releases
url "http://repository.springsource.com/maven/libraries/external"
}
}
group = 'com.thisproject'
sourceCompatibility = '1.6'
version = '1.7.26-SNAPSHOT'
jar {
manifest {
attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version
}
destinationDir = file('build/')
}
task deployToFolder(dependsOn: 'jar') << {
copy {
from jar.archivePath
into "${deployFolder}"
}
}
task sourcesJar(type: Jar, dependsOn:classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
artifacts {
archives sourcesJar
}
dependencies{
compile group: 'log4j', name: 'log4j', version: '1.2.16'
compile group: 'commons-logging', name: 'commons-logging', version: '1.1.1'
compile group: 'com.lowagie', name: 'itext', version: '2.0.8'
compile group: 'commons-codec', name: 'commons-codec', version: '1.6'
compile group: 'commons-lang', name: 'commons-lang', version: '2.4'
compile group: 'commons-io', name: 'commons-io', version: '1.4'
compile group: 'commons-validator', name: 'commons-validator', version: '1.2.0'
compile group: 'org.apache.axis', name: 'axis-jaxrpc', version: '1.4'
compile group: 'com.esendex', name: 'esendex.sdk', version: '1.0'
compile group: 'org.apache.lucene', name: 'lucene-core', version: '1.9.1'
compile group: 'org.apache.lucene', name: 'lucene-snowball', version: '1.9.1'
compile group: 'com.sun.jersey', name: 'jersey-client', version: '1.12'
compile group: 'com.sun.jersey', name: 'jersey-json', version: '1.12'
compile group: 'com.sun.jersey.ri', name: 'jax-rs-ri', version: '1.12'
compile group: 'org.codehaus.jackson', name: 'jackson-mapper-asl', version: '1.9.2'
compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.10.Final'
compile group: 'org.hibernate', name: 'hibernate-validator', version: '4.3.1.Final'
compile group: 'org.springframework', name: 'org.springframework.aop', version: '3.1.1.RELEASE'
compile group: 'org.springframework', name: 'org.springframework.beans', version: '3.1.1.RELEASE'
compile group: 'org.springframework', name: 'org.springframework.context', version: '3.1.1.RELEASE'
compile group: 'org.springframework', name: 'org.springframework.jdbc', version: '3.1.1.RELEASE'
compile group: 'org.springframework', name: 'org.springframework.orm', version: '3.1.1.RELEASE'
compile group: 'org.springframework', name: 'org.springframework.oxm', version: '3.1.1.RELEASE'
compile group: 'org.springframework', name: 'org.springframework.transaction', version: '3.1.1.RELEASE'
compile group: 'org.springframework', name: 'org.springframework.web.servlet', version: '3.1.1.RELEASE'
compile group: 'spring-social-jpa', name: 'spring-social-jpa', version: '0.0.1'
compile group: 'javax.xml.bind', name: 'jsr173_api', version: '1.0'
compile group: 'javax.validation', name: 'validation-api', version: '1.0.0.GA'
compile group: 'com.googlecode.libphonenumber', name: 'libphonenumber', version: '4.1'
compile group: 'axis', name: 'axis', version: '1.4'
compile group: 'org.apache.commons', name: 'commons-email', version: '1.2'
compile group: 'org.apache.tomcat', name: 'catalina', version: '6.0.35'
compile group: 'javax.servlet', name: 'servlet-api', version: '2.5'
compile group: 'javax.servlet', name: 'jsp-api', version: '2.0'
compile group: 'org.springframework.security', name: 'org.springframework.security.web', version: '3.1.1.RELEASE'
compile group: 'commons-httpclient', name: 'commons-httpclient', version: '3.0.1'
compile group: 'net.sf.opencsv', name: 'opencsv', version: '2.0'
testCompile 'junit:junit:4.11'
testCompile group: 'org.springframework', name: 'org.springframework.test', version: '3.1.1.RELEASE'
testCompile 'mysql:mysql-connector-java:5.1.22'
testCompile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.10.Final'
testCompile group: 'org.hibernate', name: 'hibernate-entitymanager', version: '3.6.10.Final'
testCompile 'org.hibernate:hibernate-validator:4.3.1.Final'
compile(group: 'com.paypal.sdk', name: 'merchantsdk', version: '2.2.98')
compile(group: 'com.paypal.sdk', name: 'paypal-core', version: '1.1.1')
}
compileJava {
options.encoding = "UTF-8"
}
最佳答案
在通过网络进行大量搜索并挖掘了这么多 Gradle 和 WTP 的东西之后,我能够让它工作。基本上,有三种方法可以忽略 WTP 部署目录中的依赖项(或者我只知道其中三种!)。
1.设置transitive为false
正如您在问题中提到的,语法如下:
compile('group.id:jar.name:1.0') {transitive = false}
runtime('group.id:jar.name:1.0') {transitive = false}
providedCompile 'group.id:jar.name:1.0'
providedRuntime 'group.id:jar.name:1.0'
subprojects {
project.afterEvaluate {
eclipse.classpath.file.withXml {
it.asNode().'classpathentry'.each { entry ->
def path = entry.@path.toLowerCase()
if (path.contains('your-jar-to-ignore')) {
entry.attributes.each { attr ->
if (attr.attribute.@name.contains('org.eclipse.jst.component.dependency')) {
entry.remove(attr)
}
}
}
}
}
}
}
.classpath
的过程文件(由 gradle 完成)并防止它向指定的 JAR 添加依赖项属性。这样它就不会被复制到 WTP 部署目录。
关于java - 使用 Eclipse WTP 忽略 gradle 传递项目依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18720565/
我对 m2e 和 wtp 有一些了解,但无法弄清楚 m2e-wtp 在 m2e 和 m2e-wtp 之上提供了哪些额外功能? 我的理解:- m2e :- m2e 连接器有助于在 Eclipse 下导入
我发现 IvyDE 可以让我解决 Web 应用程序的卡住核心版本的突出问题,它需要能够从更新库中提取额外的代码,以便它位于 Web 应用程序的类路径上。为了提高开发速度,我发现“在工作区中解析”功能允
我有一个以这种方式构建的网络应用程序: A.jar -> B.war -> C.war 我正在使用 Eclipse Juno 和 WTP 版本为 1.1 . A.jar 是 B.war 包含的工作区实
我在 Eclipse 3.7.2 中创建了一堆项目。让我们给其中一些命名: W(动态网络项目) A(某个库) B(一个包含许多常用内容的库,也被其他项目使用) 项目 A 依赖于项目 B,因此 B 位于
在我们开始使用 Gradle 之前,Eclipse 中的多项目 (10-12) 开发工作通过 WTP 项目成功部署到内部 Tomcat 7 服务器之一。我们发现这对于开发非常有用。 Gradle 启动
当我在 Eclipse 中启动 Jetty 服务器(使用 jetty-wtp 插件)时,控制台输出以下错误消息:引起:java.lang.NoClassDefFoundError:javax/tran
我如何查看 WTP 对 JSP 和 JSPX 页面所做的中间转换?在一个包含大量 .jspx 页面的项目中,我在 Eclipse 的“问题”选项卡中遇到了奇怪的语法错误。它们不会影响正在运行的应用程序
Eclipse WTP创建自己的server.xml文件,并将其放置在某个文件夹中,该文件夹配置了您正在为Web项目运行的tomcat实例。如果双击服务器列表中的服务器,则会看到一个漂亮的屏幕,该屏幕
大家好。我已经启动并运行了当前的 Eclipse Luna 4.4.1,现在我希望可以选择运行 -> 在 Tomcat 上的服务器上运行也已安装和测试。 据我所知,我必须安装 WTP,所以我进行了搜索
我有一个如下所示的网络应用程序项目: Project/ src/main/java/... src/main/resources/... target/MyProject-0.01-SNA
我花了一些时间才在我的 Eclipse 工作区中按照我想要的方式设置我的“服务器项目”(一个 Tomcat 服务器)。我的过程并不容易,并且包含许多错误。有了它,我想“哎呀,我应该能够将这个项目保存在
我正在关注 WTP Tutorials Building and Running a Web Application 当我在服务器 (Tomcat 7) 上运行 WebContent 时出现错误: 类
我目前使用的是 Tomcat 7.0.21、JDK1.6.29 和 WTP 3.3.1(在 Eclipse Indigo 上运行。)我不确定我运行的是哪个版本的 M2E。当我在 Eclipse 之外执
我有一个多项目 Maven Web 项目,并且正在将 Eclipse June 与 M2E 和 WTP 一起使用。我的 test 项目定义了一个 hibernate.properties 文件(在/s
我正在尝试将Eclipse Juno(版本:4.2.0 Build ID:I20120608-1400)与WTP一起用于MacOSX Lion上我的4GB RAM MacBook Pro上的JavaS
在 Eclipse Ganymede 下,如何重新配置 Eclipse WTP“HTTP Preview Server”的默认服务器端口(8080)? @莱昂内尔 我想您从未见过与此问题相关联的“
我有一个 Eclipse 项目依赖于其他项目(Project Properties/Java Build Path/Projects),这些其他项目导出它们自己的库(Project Propertie
我有一个非常大的工作空间,总共有大约 30 个项目。我正在使用 Eclipse 3.5 和 m2eclipse。我使用默认值 check out 我的 Subversion 存储库,以便将项目导入到我
我在 eclipse 中有一个 spring mvc 项目,它的设置使用了 maven。我可以解决我所有的外部依赖关系,但现在我想在我的工作区中包含另一个本地项目。通常,我会通过 java 构建路径执
我有,Eclipse 多项目,基于 Gradle,Tomcat 7 我有 WEB 应用程序,使用 Gradle WTP 插件:eclipse-wtp 我添加了编译项目依赖:compile projec
我是一名优秀的程序员,十分优秀!