ant可以完成对于不同个project集成到一个大的project的任务;
如果你是单一project的不同模块,可以用git来管理你们团队的代码;
git也有很多可视化软件例如sourcetree等;
希望对您有帮助;
个人感觉git要比svn管理项目好一些;
java项目一般都是团队开发,当多人共同编写一个项目的时候。
代码的整合就需要用到专门的源码管理工具了。
另外java项目版本的不断更新,也需要版本的管理。
所以源码管理与版本控制工具也是每个java程序员必须要熟练掌握的。
目前比较流行的java版本控制工具主要有svn、git这两款软件。
烟台北大青鸟http://www.kmbdqn.cn/认为这两种工具也是每个java程序员必须要熟练掌握的。
SVNSVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。
互联网上很多版本控制服务已从CVS迁移到Subversion。
说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。
SVN的缺陷是过分依赖网络,不适合分布式开发。
使用svn的工作流程如下:1、早上从从服务器下载项目组最新代码。
2、进入自己的分支,进行工作,每隔一个小时向服务器自己的分支提交一次代码(很多人都有这个习惯。
因为有时候自己对代码改来改去,最后又想还原到前一个小时的版本,或者看看前一个小时自己修改了哪些代码,就需要这样做了)。
3、下班时间快到了,把自己的分支合并到服务器主分支上,一天的工作完成,并反映给服务器。
GitGit是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。
Git是LinusTorvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
与常用的版本控制工具CVS,Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持(ps:这得分是用什么样的服务端,使用http协议或者git协议等不太一样。
并且在push和pull的时候和服务器端还是有交互的。
),使源代码的发布和交流极其方便。
目前GIT已经可以在windows下使用,主要方法有二:msysgit和Cygwin。
Cygwin和Linux使用方法类似,Windows版本的GIT提供了友好的GUI(图形界面),安装后很快可以上手使用。
java编写显示文本的应用程序, 需要用到图形界面GUI编程技术.
步骤一: 需要搭建一个整体的外观, 调整布局和组件的位置.
主要需要使用的组件
JTextField 文本框组件: 用于当做地址栏, 填写文件的路径
JButton 按钮, 用于响应点击事件,根据地址栏的地址读取文件, 并且显示到文本域里
JTextArea 文本域, 用于显示文件里的字符串信息
JLabel 标签, 用于显示行数信息
布局: 使用边界布局BorderLayout,可以快速按照上下左右中的位置快速布局.
步骤二: IO流,读取文本文件信息,并统计行数.
由于要按行读取,方便计算文件的行数, 所以使用Buffered 可以事半功倍.
核心代码如下
StringBuffer txtbuf=new StringBuffer()//用于保存文本信息int lines=0//用于计算行数
try {
BufferedReader br = new BufferedReader(new FileReader(fp))
String hasRead=null
while((hasRead=br.readLine())!=null){
txtbuf.append(hasRead+"\n")
lines++
}
br.close()//IO流用完记得关闭
} catch (Exception e) {
//当IO出现异常时,要进行提示
JOptionPane.showMessageDialog(this, "文件读取错误,确认文件存在,\n或者没有被其他文件打开.","IO错误",JOptionPane.ERROR_MESSAGE)
}
步骤三:整合代码
import java.awt.*import java.awt.event.*
import java.io.*
import javax.swing.*
public class ShowTextFrame extends JFrame implements ActionListener{
JTextArea jta//该文本域用于显示文本信息
JTextField jtf//该文本框,用于填写文件路径
JLabel jl//该标签用于保存读取到的行数
JButton jbt//按钮
public ShowTextFrame() {
jtf = new JTextField(18)
jbt = new JButton("读取并显示")
jbt.addActionListener(this)
JPanel jp1 = new JPanel()
jp1.add(jtf)
jp1.add(jbt)
add(jp1,BorderLayout.NORTH)
jta = new JTextArea()
JScrollPane jsp = new JScrollPane(jta)//文本域添加到滚动面板
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS)//垂直滚动条一直显示
add(jsp)
jl = new JLabel("文件共有0行")
JPanel jp2 = new JPanel()
jp2.add(jl)
add(jp2,BorderLayout.SOUTH)
setTitle("显示文本")//窗口标题
setSize(380, 320)
setLocationRelativeTo(null)//窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE)
setVisible(true)
}
public void actionPerformed(ActionEvent e) {
if(jbt==e.getSource()){
String fp = jtf.getText().trim()
Info info = getInfo(fp)
jta.setText(info.txt)//把文本信息显示到文本域
jl.setText("文件共有"+info.lines+"行")//把行数显示显示到JLabel
}
}
public Info getInfo(String fp){//通过文件路径,获取文件信息(字符串信息和行数信息)
StringBuffer txtbuf=new StringBuffer()
int lines=0
try {
BufferedReader br = new BufferedReader(new FileReader(fp))
String hasRead=null
while((hasRead=br.readLine())!=null){
txtbuf.append(hasRead+"\n")
lines++
}
br.close()//IO流用完记得关闭
} catch (Exception e) {
//当IO出现异常时,要进行提示
JOptionPane.showMessageDialog(this, "文件读取错误,确认文件存在,\n或者没有被其他文件打开.","IO错误",JOptionPane.ERROR_MESSAGE)
}
return new Info(txtbuf.toString(), lines)
}
public static void main(String[] args) {
new ShowTextFrame()//创建窗口实例
}
}
class Info{//辅助类, 用于传递信息
String txt//文字信息
int lines// 行数信息
public Info(String txt, int lines) {
this.txt = txt
this.lines = lines
}
}
运行效果图