我正在尝试配置 pom.xml 以便它自动将 EAR 存档部署到 GlassFish 应用程序服务器。我想将此操作附加到适当的 maven 执行阶段。但是无法理解哪个专用于此操作?部署?安装?请帮忙。这就是我正在做的:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>deploy</phase>
<configuration>
<tasks>
<copy file="${project.build.directory}/${project.build.finalName}.ear"
tofile="${glassfish.home}/domains/domain1/autodeploy"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
当我执行 mvn deploy 时,maven 正在尝试将我的工件部署到存储库。这不是我要完成的。感觉执行阶段不对..
最佳答案
When I'm doing
mvn deploy, maven is trying todeploymy artifacts to repository. This is not what I'm going to accomplish. I feel that the execution phase is wrong...
在 Maven 语言中,deploy 与部署到应用程序服务器无关,也不适合绑定(bind)执行此类工作的插件。这是我们可以在 Introduction to the Build Lifecycle 中读到的有关 deploy 阶段的内容:
deploy- done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects.
但是,在我进一步讨论阶段之前,我需要提到有几个插件允许与 GF 交互(启动/停止/部署/取消部署/等),它们可能做得更好比 AntRun 插件(AntRun 可能适用于琐碎的用例,但例如,您可能希望等待部署完成并且应用程序在构建期间处于就绪状态;对于此类用例,您需要更高级的控制)。这些候选人是:
使用其中一个实际上取决于您的用例。如果您不打算在许多容器上进行部署,GlassFish 特定插件是最强大的。 Cargo 的美妙之处在于它提供了统一的 API。但它的配置不太直观,尤其是在您不习惯的情况下。
现在,如果您只是想在开发期间部署一个应用程序并且不希望构建以任何方式与容器交互,绑定(bind)任何这些插件到特定阶段并没有多大用处,尽管有些人确实在 package 期间部署了他们的应用程序。
但是,您可能希望在构建过程中针对容器运行集成/功能测试。这实际上是一个完全有效且非常常见的用例,实现它的相关阶段是:
pre-integration-test: perform actions required before integration tests are executed. This may involve things such as setting up the required environment.integration-test: process and deploy the package if necessary into an environment where integration tests can be run.post-integration-test: perform actions required after integration tests have been executed. This may including cleaning up the environment.
pre-integration-test 阶段通常用于启动容器并在其上部署应用程序。 post-integration-test 阶段用于取消部署应用程序并停止容器。
所以我认为部署到服务器可以是一个典型的构建 Activity ,有非常有效的用例,并且 Maven 很好地支持了这一点。不过,我不会作为构建的一部分部署到我的开发服务器(也不会部署到生产服务器)。
关于java - 部署到应用程序服务器的正确 maven2 阶段是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3321091/
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返