首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >常春藤依赖性

常春藤依赖性
EN

Stack Overflow用户
提问于 2016-06-15 08:13:08
回答 1查看 4.5K关注 0票数 1

Problem:我需要一个不应该部署到Tomcat的eclipse类路径库。(在maven项目中将提供范围)

解释:

我已经设置了一个带有一些常春藤依赖项的项目,并且必须将一个配置外部化为JNI (mail/session),为了做到这一点,我必须将mail-1.4.7.jar放在Tomcat文件夹中。

问题是,我有一个依赖项添加到我的类路径javax.mail-1.5.2.jar中,所以我将它更改为:

代码语言:javascript
运行
AI代码解释
复制
<dependency org="org.apache.logging.log4j" name="log4j-core" rev="2.2">
    <exclude org="com.sun.mail" name="javax.mail"/>
</dependency>

现在的问题是,由于缺少邮件类(如javax.mail.MessagingException ),我的项目中断(编译错误)。

因此,我必须添加邮件依赖项,但只能添加到eclipse。我尝试了一些配置,如我从Maven行为中了解到的那样解释了这里,但没有效果。

只在项目中保留邮件依赖,破坏Tomcat,将其保留在tomcat和项目中断项目上。当我从项目库文件夹(WEB\ lib )手动删除它时,在部署项目之后,它将正常工作。

底线(部署后):

代码语言:javascript
运行
AI代码解释
复制
tomcatFolder                    
  |_lib
  |   |_...
  |   |_mail-1.4.7.jar
  |   |_...
  |_webapps
        |_myproject
             |_WEB-INF
                  |_lib
                     |_...
                     |_javax.mail-1.5.2.jar //need to remove it at deploy time only
                     |_...

现在不能把它改成maven。但它正在进行中:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-18 00:37:01

这其实是一个重复的问题:

但是..。从您的问题中,我怀疑您没有使用常春藤配置映射。这是不幸的,因为这是常春藤用于将依赖关系逻辑分组为功能分组的机制,类似于Maven维护作用域的方式。下面的帖子试图将这种理解联系起来

此外,您还在使用Eclipse,这意味着除非您使用的是常春藤插件,否则您实际上有两种构建机制。(常春藤和月食)我建议先修复ANT构建,然后再看看如何维护Eclipse类路径。

示例

第一节描述如何在常春藤文件中声明和使用配置,第二节解释如何在构建逻辑中使用常春藤任务。

ivy.xml

您应该始终声明常春藤配置,并使用这些配置来控制类路径。在我的构建中,我总是至少有三个:编译、运行时和测试。请注意扩展属性是如何用于在信任项之间创建关系的,因为运行时还应该包含编译依赖项。

为提供的作用域jars添加一个额外的jars很容易。简单的独立配置:

代码语言:javascript
运行
AI代码解释
复制
<ivy-module version="2.0">
    <info organisation="com.myspotontheweb" module="demo"/>

    <configurations>
        <conf name="compile"  description="Required to compile application"/>
        <conf name="runtime"  description="Additional run-time dependencies" extends="compile"/>
        <conf name="test"     description="Required for test only" extends="runtime"/>
        <conf name="provided" description="Needed for compile, but will be present on the target platform."/>
    </configurations>

    <dependencies>
        <!-- compile dependencies -->
        <dependency org="org.slf4j" name="slf4j-api" rev="1.7.5" conf="compile->default"/>

        <!-- runtime dependencies -->
        <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.7.5" conf="runtime->default"/>

        <!-- test dependencies -->
        <dependency org="junit" name="junit" rev="4.11" conf="test->default"/>

        <!-- provided dependencies -->
        <dependency org="org.apache.tomcat" name="servlet-api" rev="6.0.16" conf="provided->master"/>
    </dependencies>

</ivy-module>

是配置映射使事情变得特别。简单的解释是,当从Maven存储库中提取时,它们分为两种基本类型:

  • Conf=“>default”
  • Conf=“本地配置->主”

第一种方法包括远程模块及其所有依赖项。第二种方法包括远程模块,并排除它的依赖关系。这意味着您不需要以下排除欺骗:

代码语言:javascript
运行
AI代码解释
复制
<dependency org="org.apache.logging.log4j" name="log4j-core" rev="2.2">
    <exclude org="com.sun.mail" name="javax.mail"/>
</dependency>

您只需使用以下内容,如果您只需要log4j核心jar:

代码语言:javascript
运行
AI代码解释
复制
<dependency org="org.apache.logging.log4j" name="log4j-core" rev="2.2" conf="provided->master"/>

补充说明:

  • 在常春藤映射到远程“默认”配置将只拉下您需要的jars。它将排除可选的依赖项和其他东西,如javadocs。
  • 有时,当模块作者错误地理解他们的依赖时,“排除”是必要的。

build.xml

“解决”目标将提取依赖项,生成报告,并创建编译和测试类路径。注意使用配置来确定应该使用哪些jar分组:

代码语言:javascript
运行
AI代码解释
复制
<target name="resolve" description="Use ivy to resolve classpaths">
    <ivy:resolve/>

    <ivy:report todir='${build.dir}/ivy-reports' graph='false' xml='false'/>

    <ivy:cachepath pathid="compile.path" conf="compile,provided"/>
    <ivy:cachepath pathid="test.path"    conf="test,provided"/>
</target>

然后,这些类路径引用被编译目标正常地使用:

代码语言:javascript
运行
AI代码解释
复制
<target name="compile" depends="resolve,resources" description="Compile code">
    <mkdir dir="${build.dir}/classes"/>
    <javac srcdir="${src.dir}" destdir="${build.dir}/classes" includeantruntime="false" debug="true" classpathref="compile.path"/>
</target>

<target name="compile-tests" depends="compile" description="Compile tests">
    <mkdir dir="${build.dir}/test-classes"/>
    <javac srcdir="${test.src.dir}" destdir="${build.dir}/test-classes" includeantruntime="false" debug="true">
        <classpath>
            <path refid="test.path"/>
            <pathelement path="${build.dir}/classes"/>
        </classpath>
    </javac>
</target>

试验目标是:

代码语言:javascript
运行
AI代码解释
复制
<target name="test" depends="compile-tests" description="Run unit tests">
    <mkdir dir="${build.dir}/test-reports"/>
    <junit printsummary="yes" haltonfailure="yes">
        <classpath>
            <path refid="test.path"/>
            <pathelement path="${build.dir}/classes"/>
            <pathelement path="${build.dir}/test-classes"/>
        </classpath>
        <formatter type="xml"/>
        <batchtest fork="yes" todir="${build.dir}/test-reports">
            <fileset dir="${test.src.dir}">
                <include name="**/*Test*.java"/>
                <exclude name="**/AllTests.java"/>
            </fileset>
        </batchtest>
    </junit>
</target>

最后,使用常春藤检索任务构建war文件。只使用“运行时”配置jars:

代码语言:javascript
运行
AI代码解释
复制
<target name="package" depends="test" description="Create the WAR file">
    <ivy:retrieve pattern="${build.dir}/lib/[artifact].[ext]" conf="runtime"/>

    <war destfile="${war.file}" webxml="${resources.dir}/web.xml">
        <fileset dir="${resources.dir}" excludes="web.xml"/>
        <lib dir="${build.dir}/lib"/>
    </war>
</target>

总之,缓存路径常春藤任务用于基于常春藤配置创建类路径引用,而检索任务用于组装war文件。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37840659

复制
相关文章
重排序与数据依赖性
上一篇博客我们了解了Java内存模型,下面我们来了解一下重排序和数据依赖性的相关知识。
Java架构师必看
2021/07/14
5350
Fedora 29 查看 rpm 包 依赖性 以 libconfig 为例
查看依赖性方法: # rpmrepater会向用户显示已安装包的列表,你可以使用上/下箭头来滚动屏幕 # 可以在指定包上使用"r"键来显示其依赖关系,循环在指定包上按下"r"键可以展示出余下的信息。 # "L"标志的意思是说这个包是一片“孤叶”,意思说说没有任何包依赖它。 # "o"标志是说这个包是整个依赖链的中间部分。 # 按下"b"键会显示其他依赖于该包的其他包。 yum install rpmreaper rpmreaper 
西湖醋鱼
2020/12/30
7340
Fedora 29 查看 rpm 包 依赖性 以 libconfig 为例
生存分析模型的时间依赖性ROC曲线可视化
人们通常使用接收者操作特征曲线(ROC)进行二元结果逻辑回归。但是,流行病学研究中感兴趣的结果通常是事件发生时间。使用随时间变化的时间相关ROC可以更全面地描述这种情况下的预测模型。
拓端
2022/03/05
2.4K0
生存分析模型的时间依赖性ROC曲线可视化
R语言实现 Copula 算法建模依赖性案例分析报告
copula是将多变量分布函数与其边际分布函数耦合的函数,通常称为边缘。Copula是建模和模拟相关随机变量的绝佳工具。Copula的主要吸引力在于,通过使用它们,你可以分别对相关结构和边缘(即每个随机变量的分布)进行建模。
拓端
2020/07/16
1.9K0
教你如何在Fedora,CentOS,RHEL中检查RPM包的依赖性
我们都知道,在基于红帽的Linux系统中,一个RPM包,需要把先将它依赖的其他包安装好才能正常的工作。对于终端用户,RPM的安装、更新、删除中存在的依赖关系已经被工具透明化了(如 yum或 DNF等)
小小科
2018/05/03
1.5K0
教你如何在Fedora,CentOS,RHEL中检查RPM包的依赖性
IEEE详解深度学习“常春藤联盟”,AI云将席卷企业级服务
【新智元导读】开源以及云服务让深度学习这种高端的AI技术几乎能供所有人使用,初创企业虽然能在细分领域抢占市场,或让自己被巨头收购,但在人才竞争以及用户方面,还是远远敌不过巨头。再加上巨头利用开源收集到的数据,不断完善自己的深度学习模型,而且凭借资源开发其专属的深度学习硬件,进一步加高技术壁垒。然而,目前市场上还没有出现一个深度学习“杀手级应用”,这仍是一片有待抢占的空白。 Facebook 的深度学习人工智能系统已经可以从照片中认出谁是谁,谷歌的AI 已经学会预测你想要的搜索结果——但是,即便你所在的公司的
新智元
2018/03/27
8270
IEEE详解深度学习“常春藤联盟”,AI云将席卷企业级服务
苹果人事“大地震”,意图减少对iPhone的依赖性
近一段时间以来,苹果高管变动的新闻一直没有停歇,包括以往被看作苹果下一任接班人的零售主管安吉拉·阿伦茨企卸任,约翰·詹南德雷亚被任命为机器学习和人工智能业务高级副总裁,Siri语音助手业务负责人比尔·斯塔西奥被罢免……这些人事变动在苹果是较为罕见的,但并不是偶然发生的。
镁客网
2019/03/06
4310
苹果人事“大地震”,意图减少对iPhone的依赖性
NeuroImage:步行动作观察和运动想象中EEG相位依赖性调制
神经影像研究主要研究运动的动作观察(AO)和运动想象(MI)期间的皮质活动在哪里被激活,以及它们是否与动作执行时激活的区域相匹配。然而,目前还不清楚大脑皮层活动是如何被调节的,尤其是活动是否取决于观察或想象的运动相位。本研究使用脑电图(EEG)研究了AO和AO+MI步行过程中与步态相关的皮层活动,受试者分别在想象和不想象的情况下观察步行。脑电源和频谱分析表明,感觉运动皮质的α、β功率降低,功率调制依赖于步行时的相位。AO+MI时的相位依赖性调制,与以往步行研究报道的实际步行时的相位依赖性调制相似。这些结果表明,在步行过程中,AO+MI的联合作用可以诱导部分感觉运动皮质的相位依赖性激活,即使不伴随任何实际运动。这些发现将扩大对步行和认知运动过程的神经机制的理解,并为神经性步态功能障碍患者的康复提供临床上有益的信息。
悦影科技
2021/01/25
6130
NeuroImage:步行动作观察和运动想象中EEG相位依赖性调制
14+!整合基因组图谱基于深度学习预测癌症依赖性!
全基因组功能缺失筛选揭示了癌细胞增殖所必需的基因,被称为癌症依赖性。将癌症的依赖性与癌细胞的分子组成或未经筛选的细胞系以及进一步与肿瘤联系起来仍然具有挑战性。
作图丫
2022/03/29
7010
14+!整合基因组图谱基于深度学习预测癌症依赖性!
中国常春藤联盟院校都参与,腾讯广告算法大赛30万大奖出炉!
【新智元导读】7月30日,2018腾讯广告算法大赛决赛结果出炉:来自吉林大学、哈工大和北邮同学组建的“葛文强”队夺得大赛冠军,赢得30万元奖金!这次大赛赛题是Lookalike技术,目的是帮助广告主触达最大化相似人群量级,从而高效促进营销目标转化。主办方介绍,本届参赛选手73%是学生团队,C9院校参赛人数都超过了一百,竞争非常激烈。
新智元
2018/08/16
7670
中国常春藤联盟院校都参与,腾讯广告算法大赛30万大奖出炉!
谷歌力作:神经网络训练中的Batch依赖性很烦?那就消了它!
优化神经网络方法千千万,批量归一化(Batch Normalization,BN)就是其中之一。
量子位
2019/12/19
6280
【Maven官网文档】Optional & Exclusion Maven中的可选依赖和依赖性排除
如果明确一个 project 无论出于什么原因考虑都不可能继续分割成子项目,则其依赖可以使用 optional。 如果其他 project 依赖了 使用 optional 的 project, 则他们需要自主选择该依赖,亦即是说,该 optional 依赖不会通过传递性依赖传递给上层的 project。
青山师
2023/05/05
5340
微服务的风险:分布式固有的复杂性、服务的依赖性及雪崩效应
在微服务架构下,传统的单体应用被拆分为多个服务后,服务的数量变多了,同时之前单体架构下进程内部的方法调用转变为分布式网络环境下的远程调用,因此构建分布式微服务系统带来了额外的开销。
愿天堂没有BUG
2022/10/28
6140
微服务的风险:分布式固有的复杂性、服务的依赖性及雪崩效应
R语言分析股市相关结构:用回归估计股票尾部相关性(相依性、依赖性)
我们都了解股票相对于市场的贝塔系数、股票相对于市场的敏感性(例如标准普尔 500 指数)的概念。尾部相关性的概念类似,因为它是股票对市场回撤的敏感性。如果每次市场下跌,股票下跌,那将意味着两件事:
拓端
2023/06/16
1990
Xilinx FPGA AXI4总线(三)——握手机制、通道依赖性及AXI-Lite握手实例
AXI4:高性能内存映射需求(如读写DDR、使用BRAM控制器读写BRAM等),为了区别,有时候也叫这个为 AXI4-Full;
FPGA探索者
2021/04/15
3.3K0
Xilinx FPGA AXI4总线(三)——握手机制、通道依赖性及AXI-Lite握手实例
有网络依赖性的公司防御DDoS必看的知识,还不了解一下吗?
相信防御DDoS对于大多数人来说都不陌生了,但是DDoS攻击对很多人来说还是十分神秘,大多数都不清楚具体要如何防护这种攻击了。下面我们先来给大家详细了解一下这个神秘的DDoS攻击是什么?
blublu7080
2021/01/22
5850
有网络依赖性的公司防御DDoS必看的知识,还不了解一下吗?
今日 Paper | 依赖性解析器;DNNs对图像损坏;高效人脸特征学习 ;虚拟试穿统一框架等
论文名称:A Fast and Accurate Dependency Parser using Neural Networks
AI科技评论
2020/02/21
4300
SaaS投资风又起,超千亿规模的中国市场大有可为
来源: 融中财经|作者 :张叶  编辑 :吾人 ---- 未来市场中可能只有一个Amazon、Google,但是会有成百上千个垂直领域的软件公司,来满足当代企业各部门日益增长的需求。 SaaS等于ToB,这是对SaaS最大的误解。 “各行各业都有产业链,唯独软件没有。企业级SaaS投资,其实就是投科技领域里的消费股。”赛意产业基金创始合伙人孙雨轩说道,“未来,每家企业都要采购很多种软件工具,这就像我们每天购买消费品一样,而且SaaS需要持续付费,可以按月可以按年,这就非常具备消费属性。但S
腾讯SaaS加速器
2021/04/21
5920
AI绘画2022.10.13
3、You need to verify your account in order to您需要验证您的帐户,以便perform this action.执行这个动作。
用户7138673
2022/12/19
2.7K0
AI绘画2022.10.13
AE:基于WRF-Chem模型的青藏高原臭氧、NO2模拟与站点海拔高度依赖性的研究
AE:基于WRF-Chem模型的青藏高原臭氧、NO2模拟与站点海拔高度依赖性的研究
气象学家
2022/06/13
9740
AE:基于WRF-Chem模型的青藏高原臭氧、NO2模拟与站点海拔高度依赖性的研究

相似问题

启用常春藤时的角度循环依赖性

33

常春藤通过常春藤扩展:决心

22

阿帕奇常春藤:依赖常春藤FIles

13

依赖性

20

常春藤斗争

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文