一、使用Git拉取项目到本地
1、团队实际开发Git概况
在实际开发的项目中,一个项目会有 三种版本分支:master版本分支、dev版本分支、自定义版本分支
master版本分支: 正式运行环境中的程序代码,运行环境会定期自动或按计划手动从该master版本分支中获取代码并重新编译和运行,不允许随意修改,一旦出错将对系统造成严重后果。所以开发人员不会被项目管理员授予:在Master上创建分支、直接提交代码到Master分支上、使用Master分支合并其他分支的权限。
dev版本分支: 测试环境中运行的代码,master版本分支会定期合并该dev版本版本分支的代码,也不允许随意修改,如果想要修改,必须先新建一个自定义版本分支,编写好代码之后同步到云端仓库,在云端使用Git向该项目的管理员发出合并请求(merge),项目管理员同意之后才能在dev分支中看到自己写好的代码。所以开发人员也不会被授予:直接提交代码到dev分支、使用dev合并其他分支的权限;但是拥有在dev分支上新建自定义分支的权限。
自定义版本分支: 自己定义的版本分支,有两种情况。
情况1: 一般情况下,开发人员使用git clone命令、使用IDEA或GitHub Desktop等其他图形化工具从云端复制项目到本地的是当前时间的master版本,开发人员需要在本地新建一个分支(可以命名为dev)关联到云端的dev分支,再在本地dev分支上新建一个自定义版本分支。
情况2: 还有一种情况是先在云端的dev上新建一个自己的分支,再使用命令行自定义拉取信息,拉取刚才新建的分支到本地。
当开发人员在自定义分支上开发完了自己的代码之后,将当前自定义版本分支同步到云端,这时候请求合并到dev分支,管理员或者被授权合并权限的人员就可以审核开发人员的代码并进行合并了,如果测试不通过则不予合并,如果在合并之后出现问题,则将dev分支回退到之前的版本。
2、Git拉取项目:就是复制项目到本地。
本文介绍使用IDEA从云端拉取项目,默认拉取的是master分支的快照,相当于在本地新建一个master分支,再把当前master分支的代码复制到本地master分支。
(1)新建项目,从版本控制系统拉取。
(2)从云端查看要被拉去的项目路径,在IDEA中输入项目路径
在这里复制
在这里输入
然后确认即可
3、用IDEA打开或者导入刚才的项目,项目为git-test
打开或者导入都可以,以下是打开
信任项目选择信任
此时项目就已经下载到本地并且作为一个项目文件存在了,但是还是不能直接运行,因为大型项目往往需要配置运行环境。
二、本地运行
克隆好的SpringBoot项目用IDEA打开自动会根据maven加载项目依赖,并配置启动类。
IDEA右上角菜单栏出现下图所示的情况表示加载成功。
由于项目是团队开发,所以项目的src\main\resource目录下会有对应多个状态的properties配置文件,如下图:
applicationproperties、application-devproperties、application-prodproperties分别对应总体配置、测试开发环境配置、运行环境配置。需要这些配置的原因是:测试环境(dev)和生产环境(prod)的数据库或者资源不一致,测试环境的数据库是生产环境的一个副本,生产环境数据库只允许增加和查看,修改和删除需要严格控制。
由于我们当前是在开发环境之下,所以需要加载使用dev环境的配置。但是加载和使用dev环境的配置不能在代码中设置,如果上线到运行环境运行到这部分代码就会出错,所以需要在运行时设置VM Options参数:-Dspringprofilesactive = dev,如下图:
三、本地测试
正常情况下本地测试:
在Test同路径下面创建测试类,并在类上添加注解@SpringBootTest;创建方法,并添加注解@Test
代码如下:
@SpringBootTest
public class SpringBootFunctionTests {
@Autowired
UserService userService;
@Test
public void testMethod1() {
//方法体
}
}
登录后复制
但是在某些情况下可能会报错,尤其是在某个地方使用了@WebEnvironmentAutoConfig注解之后,可能需要重新指定测试类的运行环境。
此时需要
(1)先检查pomxml,看是否配置了spring-boot-starter-test
(2)查看import,分别尝试import orgjunitTest;和import orgjunitjupiterapiTest;
(3)尝试修改注解,如:
@RunWith(SpringRunnerclass)
@SpringBootTest(classes = {OperationApplicationclass})
@SpringBootTest
public class SpringBootFunctionTests {
@Autowired
UserService userService;
@Test
public void testMethod1() {
//方法体
}
}
登录后复制

(4)如果此时还是出错,并且是在未添加@RunWith(SpringRunnerclass)注解出现NullPointer错误,添加了次注解出现上下文环境无法加载错误(ApplicationContext not found),说明没有指定测试类的运行环境配置,就像上文指定开发运行环境配置一样。
指定测试类的运行环境配置
方法有三种:
(1)一种是给Junit添加VM Options:-Dspringprofilesactive = dev
添加Junit在此项目中的总体运行配置,此时在每一次运行Junit测试的时候,IDEA都会加上此运行配置,一劳永逸。
(2)单个测试方法添加运行配置
此时需要对每个测试方法都添加配置,比较麻烦。
(3)在每个测试类上添加@ActiveProfiles(“dev”)指定运行环境,并添加@RunWith(SpringRunnerclass)
代码如下:
@RunWith(SpringRunnerclass)
@ActiveProfiles("dev")
@SpringBootTest
public class SpringBootFunctionTests {
@Autowired
UserService userService;
@Test
public void testMethod1() {
//方法体
}
}
登录后复制
也需要对每个测试类都添加这两个注解。
; 一 Java程序的启动过程 对于普通用户来说 Java最让人不习惯的是程序的启动过程 即使对于富有经验的开发者 为了用默认的装载器启动Java程序 不得不编写大量批命令 脚本文件 不得不在命令行环境下进行大量的复制/粘贴 *** 作 也很容易出现误 *** 作 用惯了Windows方便快捷的GUI 人们早就习惯了通过双击运行程序的方式 对于Java程序 要实现这个本机启动功能就必须编写定制的启动器 用定制启动器启动Java程序不仅方便了最终用户 而且使软件作品看起来更专业 本文就以Windows平台为例 介绍如何构造Java定制启动器 Java程序可以由任何本机运行的程序调用执行 所谓Java启动器 就是一个专门用来启动Java程序的本机执行程序 最常见的启动器是Sun在Java Runtime Environment的/bin目录中提供的启动器 就Windows平台而言 它们是java exe和javaw exe 前者运行时打开两个窗口 一个是接收System out/err和启动器输出的控制台窗口 另一个是Java程序本身的窗口 javaw运行时不打开控制台窗口 在J SE/EE平台中 虚拟机以动态库的形式实现 也放在/bin目录下 动态库的名字在Windows中是java dll 在Unix中是java so 所谓 装入虚拟机 就是指装入这个动态库 提供给VM的参数可以通过两种方式指定 或者是在启动器的命令行参数中指定 或者通过定义相应的环境变量指定 只有一个参数例外 要启动的类的名称只能在启动器的命令行参数中指定 虽然指定方式的多样姓为人们各取所需带来了方便 但不可否认地 它也正是许多混乱的根源 使用定制启动器能够完全避免这方面的问题 当VM结束启动类的main()方法的运行 启动器调用destroy()方法释放各种资源并退出 应当注意的是 VM一旦开始运行 我们就不能再卸载它 对于Java启动器来说 能否关闭VM无关紧要 因为启动器会随着Java程序的退出而退出 然而 对于嵌入了VM的本机应用 例如浏览器 这意味着有一块内存被永久姓地占用 不能再收回 二 Windows平台的启动器 搞清楚了Java程序的启动过程 我们就可以开始编写启动器的代码 下面这个启动器用C++写成 适合于所有Windows平台 首先 就象大多数Windows程序一样 启动器需要一个WinMain()入口 与Windows这一特定平台相关的问题 除了必要的类型转换(例如对CreateJavaVM()的转换)之外 另外一个要注意的地方就是装入VM的DLL文件 装入DLL文件最可靠的办法是显式地调用LoadLibrary() 装入JVM之后 就可以利用内核调用GetProcAddress()获得CreateJavaVM()的函数指针 然后调用该指针启动VM 在启动类的标识符中使用的分隔符是斜杠 而不是句点 即我们用 javabunny/JavaBunny 表示启动类 而不是用 javabunny JavaBunny 的形式 这是因为 FindClass()是一个虚拟机调用 而虚拟机内部用斜杠作为分隔符 随便说明一下 这个例子把启动类的名字(和其他一些配置选项)直接写进了代码之中(称为 硬编码 ) 对于提供给最终用户使用的产品 这种做法有其优点 但对于开发环境来说 这些值最好拿出来放在某个配置文件中 Java程序启动后执行的第一个方法称为启动方法 通常是main() 本例通过JNI调用GetStaticMethodID()获得启动方法的ID GetStaticMethodID()要求指定方法的名字( main )和方法的类型描述符( ([Ljava/lang/String;)V ) 这个类型描述符表示方法的参数是一个字符串的数组 返回值类型是void 有关类型描述符的更详细的说明 请参见JVM相关资料 注意 从这里可以看出 在使用定制启动器时 Java程序的启动方法不必一定是static void的main方法 可以用任何方法作为Java程序中第一个执行的方法 甚至包括实例方法或构造函数 示例程序中最后一个需要注意的地方是jvm >DestroyJavaVM()调用 从表面看起来 这个语句似乎是程序执行后进行清理工作的方法 可有可无 其实不然 如果Java程序是多线程的 在调用这个方法时程序仍旧在运行 例如 对于一个运行着的Swing程序 如果它的main方法结束 DestroyJavaVM()的执行将被阻塞 直至所有非守护线程都执行完毕 所以这行代码是必不可少的 如果省略这行代码 则当主线程执行完毕 即使其他线程(例如Swing GUI的事件循环)仍旧在运行 整个程序也会立即退出 三 配置和使用 如前所述 这个启动器以硬编码的方式指定了启动类的名字 但是没有一个路径是硬编码的 这是定制启动器的优点之一 由于所有的路径都是相对的 用户可以把整个Java应用从一个文件夹拖到另一个驱动器(或另一台机器)的文件夹 程序的运行不会出现任何问题 本文的启动器假定JRE总是在应用软件所在目录的一个子目录下 也就是说 JRE应当随同应用软件一起发布 这样做的好处是使得应用软件完全不依赖于用户的环境 确保了JRE与应用程序的兼容姓 即使用户系统中原来已经有JRE 增加一个额外的JRE也只不过稍微占用了一点磁盘空间 但却能有效地保证应用软件的稳定姓 在某些场合 你可能需要将一些配置参数移出程序 例如放入一个配置文件 特别是在需要频繁改动启动方式的开发阶段 建议移出程序之外的配置选项包括 启动类 类的路径 某些VM参数 例如 verbose lishixinzhi/Article/program/Java/hx/201311/26520
获得项目服务器的IP大概做法是在配置文件里面进行配置,可以使服务器已启动便执行,示例如下:
启动服务器的时候启动一个类,可以在webxml中配置,如下:<servlet>
<servlet-name></servlet-name>
<servlet-class></servlet-class>
<init-param>
<param-name>basedir</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
指明你需要启动的servlet即可
获取当前线程的ClassLoader,通过ClassLoader获取当前工作目录,对目录下的文件进行遍历扫描。过滤出以class为后缀的类文件,并加载类到list中,对list中所有类进行校验,判断是否为指定接口的实现类,并排除自身。返回所有符合条件的类。
这个方没有考虑不同的文件格式。当程序打成jar包,发布运行时,上述的这种遍历file的 *** 作就失效了。只能扫描到当前方法的同级目录及其子目录。无法覆盖整个模块,遍历文件的逻辑太啰嗦,可以简化。
扩展资料:
Java使用注意事项:
1、如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件。
2、如果指定了classpath,那么会在指定的目录下查找要运行的类文件。
3、PATH环境变量。作用是指定命令搜索路径,在命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。
4、需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好PATH变量后,就可以在任何目录下执行javac/java等工具了。
以上就是关于java开发的话,可以在拉取的代码里开发吗全部的内容,包括:java开发的话,可以在拉取的代码里开发吗、打造java启动器步骤三、怎么在tomcat启动时自动执行一个java类 获得本项目服务器的IP和端口等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)