如果你和我一样都打不开Google reader。或者你打开网页是现实了下面的信息:
很抱歉,在 www.google.cn 上没找到您要访问的网页
你的页面跳转到:http://www.google.com/reader/?hl=zh-CN&tab=wy
因为我们众所周知的原因,它的确访问不到了。不过我们可以通过下面这个地址访问:
是不是瞬间从屌丝变成高富帅了?哈哈
如果你和我一样都打不开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)扯上关系,我不得不说如果我的生活没有开源,肯定会比现在更糟,我们程序员效率一定没有现在这么高。我们通过使用那些著名的开源软件,逐步深入,不断提升了自己的编码水平。也学习了人家的设计功力。
真心觉得SAE流氓。
我这个博客流量这么小,如果按照新浪的指标来的话,每个月可能都得花20块钱。和GAE差太远了。让人恶心。
我想我可能会在近期又再一次迁徙吧。
哎,当初真的不应该支持新浪??
上一个月,很忙碌。到后面还没退加班到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/