如果你和我一样都打不开Google reader。或者你打开网页是现实了下面的信息:
很抱歉,在 www.google.cn 上没找到您要访问的网页
你的页面跳转到:http://www.google.com/reader/?hl=zh-CN&tab=wy
因为我们众所周知的原因,它的确访问不到了。不过我们可以通过下面这个地址访问:
是不是瞬间从屌丝变成高富帅了?哈哈
想要玩得很 High 的程序员
如果你和我一样都打不开Google reader。或者你打开网页是现实了下面的信息:
很抱歉,在 www.google.cn 上没找到您要访问的网页
你的页面跳转到:http://www.google.com/reader/?hl=zh-CN&tab=wy
因为我们众所周知的原因,它的确访问不到了。不过我们可以通过下面这个地址访问:
是不是瞬间从屌丝变成高富帅了?哈哈
我们通常使用git都是使用的git的客户端,比如linux下的脚本。其实windows下也是间接使用linux脚本来进行操作。不过在现在有完全使用java语言实现的git:JGIT。我们可以通过jgit来完成我们所有的git操作。
下面我将简单些一个例子来说明,使用java来创建一个git仓库,并且为仓库添加一个远端仓库地址。如果通过git脚本来执行,那么语句就是:
git init git remote add git://XXXXXX
首先我们需要下载org.eclipse.jgit.jar 包,并将其加入eclipse 的classpath中(当然这里使用eclipse来完成操作)。示例代码为:
package com.toozhao.git; import java.io.File; import java.io.IOException; import java.net.URISyntaxException; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.InitCommand; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.StoredConfig; import org.eclipse.jgit.transport.RefSpec; import org.eclipse.jgit.transport.RemoteConfig; import org.eclipse.jgit.transport.URIish; public class TestJGit { public static void main(String[] args) { Repository repo = null; String path = "d:/testjgit"; // 设置git仓库的路径 InitCommand init = new InitCommand(); // 设置路径 init.setBare(false).setDirectory(new File(path)); // 执行git init ,创建仓库 Git git; try { git = init.call(); // 创建仓库 repo = git.getRepository(); System.out.println("create repo success"); } catch (GitAPIException e) { e.printStackTrace(); } // 执行 git remote add 命令 // 实例化一个RemoteConfig 对象,用户配置远端仓库 StoredConfig config = repo.getConfig(); try { RemoteConfig remoteConfig = new RemoteConfig(config, "origin"); // 设置你的远端地址 URIish uri = new URIish("git://github.com/wahyd4/testjgit"); // 设置哪个分支 RefSpec refSpec = new RefSpec("+refs/head/*:refs/remotes/origin/*"); // 更新配置 remoteConfig.addFetchRefSpec(refSpec); remoteConfig.addPushRefSpec(refSpec); remoteConfig.addURI(uri); remoteConfig.addPushURI(uri); // 更新配置 remoteConfig.update(config); // 保存到本地文件中 config.save(); System.out.println("git remote add success."); } catch (URISyntaxException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
执行完本代码后,打开d:/testjgit/可以看到一个.git的隐藏文件夹(如果看不到,请设置去除隐藏文件夹)。表明它已经是一个git仓库了。如果你的eclipse安装有aptana 插件,将仓库导入eclipse,eclipse还可以自动识别出git仓库。而在Egit 1.x插件中版本中都不能识别出。
如果你打开.git/CONFIG文件。你还可以看到:
[core] repositoryformatversion = 0 filemode = false logallrefupdates = true [remote "origin"] url = git://github.com/wahyd4/testjgit pushurl = git://github.com/wahyd4/testjgit fetch = +refs/head/*:refs/remotes/origin/* push = +refs/head/*:refs/remotes/origin/*
这些既是我们对仓库进行的配置,全都由这个文件定义。使用aptana,你可以直接将仓库push 到你设置的远端地址。
首先需要使用git客户端从github下载nexus的最新源码:https://github.com/sonatype/nexus
因为nexus本身就是一个非常复杂的maven项目,因为我们只能使用maven来编译。如果我直接编译,nexus就会报各种找不到包的错误。
原因是我们需要把nexus官方的一个仓库加入到maven的settings文件中。代码为:
<settings> <profiles> <profile> <id>sonatype-forge</id> <repositories> <repository> <id>sonatype-forge</id> <url>http://repository.sonatype.org/content/groups/forge/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>sonatype-forge</id> <url>http://repository.sonatype.org/content/groups/forge/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>sonatype-forge</activeProfile> </activeProfiles> </settings>
然后再次编译,就应该可以构建成功了。由于nexus的仓库在国外,个人感觉速度比maven中央仓库要慢一个等级。在编译过程中,maven会自动执行一些插件和完成相关的单元测试。大概等待1-2个小时左右(由电脑性能和网络决定),就可以编译完成了。
作为一个Java程序员,我想我们很多时候都需要和开源(open source software)扯上关系,我不得不说如果我的生活没有开源,肯定会比现在更糟,我们程序员效率一定没有现在这么高。我们通过使用那些著名的开源软件,逐步深入,不断提升了自己的编码水平。也学习了人家的设计功力。
上一个月,很忙碌。到后面还没退加班到9点,所以就很久很久没有打理自己的博客了。今天说一些如何使用maven部署一个只有编译后的jar的第三方包到我们的nexus仓库服务器。通常我们说的部署都是部署一个maven项目,有pom.xml,里面写有部署管理
我们将使用 mvn deploy:deploy-file 命令执行部署。在命令行中输入下面命令:
mvn deploy:deploy-file -Dfile=<你的文件路径> -DgroupId=<你想要命名这个jar的groupId> -DartifactId = <你想要的artifactId,通常为jar的名字即可,如:mysql-jdbc-driver,建议不要有大写> -Dversion= <版本> -Dpackaging =<打包类型,一般有jar,war,ear,bundle,根据自己文件的类型决定> -Drep[ositoryId =<这里是全局配置settings.xml里面用于验证的server Id,要与仓库路径对应> -Durl = <仓库的url地址,会使用上面的server Id里面的用户名和密码进行验证>
回车即可执行了,需要注意的是,版本里面定义的snapshots 和release 要和后面部署的仓库地址对应哦,即是:snaposhot版本只能部署到snapshot仓库。这个很重要。
如果你确保所有信息都输入正确,仍然不能部署成功,请尝试 mvn -e deploy:deploy-file
在Jboss as 7中,我们需要通过JMX进行远程部署项目,并进行权限验证。而jboss as 7默认是将jmx 远程关闭了的。
甚至我们尚且不能通过远程主机的真实IP进行访问。默认情况下我们只能通过localhost或者127.0.0.1 进行访问。
下面我们进行通过jboss-as-maven-plugin 远程部署项目到jboss as 7上面。这里只讨论standalone模式。
第一步,首先我们需要允许用户通过外网IP访问服务器。打开${JBOSS_HOME}/standalone/configuration/standalone.xml .
搜索文件中的127.0.0.1 我们大致可以搜索到下面几条信息:
${jboss.bind.address:127.0.0.1} <interfaces> <interface name="management"> <inet-address value="${jboss.bind.address.management:127.0.0.1}"/> </interface> <interface name="public"> <inet-address value="${jboss.bind.address:127.0.0.1}"/> </interface> </interfaces>
通过上面这些信息,我们可以看到jboss已经把其web服务器以及web console(web控制台)以及 comman line(命令行)的地址都绑定到127.0.0.1上面了。也就是用户只能通过本地对服务器对其访问与管理。在网上看到有人解释说,这是因为jboss处于安全的考虑。这个姑且不管,我们现在需要实现通过真实IP访问。
因为将文件中的127.0.0.1全部替换为0.0.0.0,保存文件后,重启。
现在输入服务器的外网IP就已经能够访问了,不管是8080,9990,还是9999端口。
下面添加远程JMX的配置
同样是该文件。我们通过搜索定位到:
<subsystem xmlns="urn:jboss:domain:jmx:1.0">
在其节点中,添加下面的信息:
<!-- Delete the following line to disable remote access --> <jmx-connector registry-binding="jmx-connector-registry" server-binding="jmx-connector-server" />
该信息即是让jboss as 7 支持远程访问的关键。如果想取消远程访问,则请删除该行后重启服务器即可。
下面是对项目中的pom.xml进行配置,添加jboss-as-maven-plugin
<plugin> <groupId>org.jboss.as.plugins</groupId> <artifactId>jboss-as-maven-plugin</artifactId> <version>7.1.0.CR1b</version> <executions> <execution> <!-- 下面部分是让执行 mvn install 时 自动执行jboss-as:deploy <phase>install</phase> <goals> <goal>deploy</goal> </goals> <!—这里是远程服务器的相关配置,如果为本地服务器我们完全可以删除configuration 节点及里面的配置信息,本地部署不需要realm 权限认证 –> <configuration> <hostname>192.168.1.106</hostname> <port>9999</port> <!-- 用户名和密码为jboss as 中添加的用户名和密码,如果没有 请通过运行 /bin/adduser..bat 添加 -- <username>admin</username> <password>wahyd4</password> </configuration> </execution> </executions> </plugin>
现在配置好了,执行mvn install时候 ,maven就会自动部署项目到jboss as 7中了。
这个东西,一直在网上都没有找到答案。。
格式 没有缩减,请谅解。。有问题,请留言一起讨论。
hudson是一个很强大的持续集成服务器,支持maven、git等强大工具,通常情况下我们我们使用期来持续集成如git 仓库中的代码,编译后打包发送到maven包仓库如nexus中。
今天在执行Hudson编译git仓库中代码的时候发现如下错误:
ERROR: Problem fetching from origin / origin - could be unavailable. Continuing anyway ERROR: Could not fetch from any repository FATAL: Could not fetch from any repository hudson.plugins.git.GitException: Could not fetch from any repository
在网上看到一些资料,这里有一篇Jenkins对git plugin 的描述比较详细:https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin 。
发现。出现这种问题的大多是windows 系统上的git。不能fetch数据,也就是将服务器上最新的代码下载下来与本地同步。大致原因就是因为git找不到读取git 仓库中代码所需要的密钥。
我们所需要做的是将系统中集成的path to git executable 路径换成msysgitcmdgit.cmd,而不是我们通常设置成的msysgitbingit.exe.
这样git就可以成功工作了。当然也就可以fetch repository 了。
现在应该就可以正常工作了吧。
昨天我自己创建github page的时候,怎么也创建不起,不过自己看都是按照官方文档来的啊。
到最后才发现,原来github默认给每个注册用户分配了一个github page,地址就是 你的用户名.github.com,不过默认当然是没有开通的。因此不可以创建其他名称的二级域名作为项目名哦,只能是:
你的用户名.github.com
下面简单说一下步骤:
创建一个仓库名称为 :你的用户名.github.com,
在本地仓库中添加一个index.html文件,并向其中加入一些内容。然后push到github 的master分支就行了。
如果成功的话,系统会在几分钟内给你发个消息说,成功了。
如果没有消息,也就意味着没有成功哦。
你的域名就是: http://用户名.github.com
比如我的:http://wahyd4.github.com/
目前只是简单的github page 。
我们还可以绑定自己的域名,顶级域名或者二级域名都可以的。
其实最诱人的是我们可以利用github page 做我们的博客空间。当然这些都是免费了哦。
jekyll可以用来生成静态博客。我们可以用disqus做我们的评论系统。这样什么都有了哦,当然这里已经有人帮我把这些东西结合好了,博客还用到了twitter bootstrap 哦,这个东西就叫jekyll-bootstrap 我们只需要把他的仓库clone到本地,然后就可以使用了。
具体的东西请看官方教程吧。简单使用是很简单的。
jekyll: https://github.com/mojombo/**jekyll**
jekyll-bootstrap:http://jekyllbootstrap.com/