当使用Maven遇到”resolution will not be reattempted until the update interval of MyRepo has elapsed”的解决办法

当你部署了一个私有的Maven Repo,然后release/snapshots里库被更新了,就有可能遇到标题上的错误。

网上有一种解决办法,就是修改setting.xml里的updatePolicy设置,比如:

把updatePolicy改成always, 就没有这个问题了。

还有一种办法就是在命令行上加上-U的选项,有一样的效果。下面有一些说明。

  • -U,–update-snapshots Forces a check for updated releases and snapshots on remote repositories
  • -up,–update-plugins Ineffective, only kept for backward compatibility

 

JBoss+Maven+Cargo开发EJB的Hello World!

Team要使用EJB了,不再使用以前比较山寨的CGI+Google Protocol; 同时构建工具也变成了Maven。这几天做了些实验,想写一个最简单的Hello World。有一个EJB的Service,再有一个Client去使用这个服务。

几天下来有点小崩溃,相对EJB 3的教程来说,配置实在太麻烦,有太多的属性、参数、版本要做了。好在最后取得了成功,记在这里做个小结。

1. 工具的安装

Maven 3

从Apache的网站上下载,然后把${MAVEN_HOME}/bin目录加到系统的PATH下。

JBoss AS

我这里下载的是JBoss AS 7.1.1.Final压缩包。这里的版本非常重要,它和之后开发的其他包有依赖关系。

假设JBoss被解压到${JBOSS_HOME}下。

NOTE: 解压之后一定在JBoss的bin下运行add-user.bat,安装一个管理用户。这个很重要。

2. 写一个EJB的服务

写一个简单EJB服务很简单,我们可以有Maven的archetype生成一个工程的框架。

一路回车之后,就得到了一个Server的工程文件夹结构。但删掉默认生成的App.java和AppTest.java.

然后在org.yli.learn.server中,加入两个类。一个是接口SayHello,一个是EJB Bean类SayHelloBean.

里面用到一些EJB 3的Annonation,大家自己查查书吧。

下一步就是修改pom.xml文件了,这里我们只要加入一些编译的依赖就行。

然后你可以编译安装了。

3. EJB Bean的部署

我选择了Cargo来部署Bean到JBoss里,好像有一个plugin叫jboss-as的,也可以做一样的事情。

我们只要在pom.xml加上:

然后就可以用mvn的goal来部署和运行JBoss了

  • 部署: mvn cargo:deployer-deploy
  • 运行: mvn cargo:run或cargo:start

好了,这样我们写好的EJB就部署到了JBoss的容器中。

4. EJB的Client

这部分的配置有点让我的崩溃,花的时间也最多。

基本步骤也是先用maven建立一个框架,比如我们的工程是org.yli.learn:client:jar:1.0, 包名是org.yli.learn.client.

我们在包里有一个Client,它会去向JBoss获取service并使用。

POM文件里有相关的依赖

然后你可以用mvn clean package来编译打包了。

很重要的一点,就是要添加一个properties文件。在src/main下面,建立一个resources的文件夹,然后在里面新建文件jboss-ejb-client.properties. 我这里使用的是一些默认的选项,具体文档在JBoss的Confluence里有介绍。

好了,可以用mvn exec:exec来运行了!

你可以顺利看到Hello, Jason!

真太不容易了!但现在的感觉很爽啊! 😀

 

关于Perl语言基本知识的学习总结

老大走了,同时留了大约7,8千行的Perl脚本给我们维护。以前Perl没学过,这两天大概看了一下,现在做下简单的总结。

总的感觉是:Perl语言真的很简洁!

变量

Perl的变量类型分成了几种:标量类型,数组类型,联合类型(理解成Map比较好)。

比如:

NOTE:其实还有引用类型,只是现在还没有用到,先不总结了。

流程控制

这个部分和其他语言很像,但有些地方会再简洁,Larry果然真的确实”很懒”。

条件控制

循环控制

和C很像,就是有的地方别忘了加上$, 如:

函数

基本语法

包(Package)

package定义一个包,如:

最后的”1;”非常重要,不然别的脚本就无法使用这个包。Perl里的True/False很像Python里定义的。

那如何使用呢,也很简单。

有几个小问题:

  1. 包的搜索路径在@INC中,如有需要,要在开始加

总结

这些就是Perl的基本内容,再把正则表达式看一下就可以开始读代码的了。

又要去“拥抱变化”了!

最近的很多事情让人越来越觉生活和工作中到处都是变化,而且变化还挺快,个人无法控制!

项目组又要平移到一个新的技术平台。那是另一个海外Team打造的,很多技术都不一样。比如再从Web端换到桌面端,后端也换成了EJB和Oracle DB,创建工具也换了Maven,总之好多变化。

程序员总爱美其名曰“拥抱变化”,可变化真来的,谁也不喜欢吧!新的技术要学,新的工具要去适应,大量的时间要重新投入。好在对这些东西还有很大的兴趣,努力吧!

BTW,仔细想想不管哪个行业,都有很多变化吧,只是程序员叫得响罢了!