Eclipse踩坑-修改项目名后部署到tomcat上仍是旧项目名

使用eclipse进行项目开发,有的时候需要修改项目的名称,可是在eclipse中部署到tomcat中访问的时候仍然只能使用旧的项目名称进行访问。

比如下图原来项目的名称是test,现在我在eclipse中改成了pc-shop-web,可是Path仍然是test,这个时候只能通过http://localhost:8080/test进行访问。

其实很简单,Eclipse肯定也把这个保存在某个文件中。通过查看最后发现这个文件在你所部署项目的.settings目录下,名字叫做:org.eclipse.wst.common.component中。比如我们这里是在pc-shop-web(以前是test)/.settings/这个目录下。文件是xml格式的。其中有个:<property name=”context-root” value=”xxxx”/>,我这里的value值是:test,修改为你最新的项目名称即可。

注意:修改完成以后需要在eclipse的Project Explorer中刷新下项目才行。

原文链接:https://blog.csdn.net/achilles12345/java/article/details/45223211

sbt问题-解决运行慢问题

sbt真是慢出翔啊,没法忍,开代理也是慢的一比,网上各种教程也尼玛不太行,搞了一晚上,记录下来。

Terminal

就按照我说的来别问为什么,我也不知道。

    • ~/.sbt下面创建repositories文件,内容如下:
[repositories]
local
osc: http://maven.aliyun.com/nexus/content/groups/public/
typesafe: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
sonatype-oss-releases
maven-central
sonatype-oss-snapshots
  • 打开终端,进入工程目录,有build.sbt那个
  • 执行sbt -Dsbt.override.build.repos=true
  • 执行console

IDEA

  • 在最开始的页面, 就是没打开任何工程的地方,右下角点Configure
  • 点Preference 左上角搜sbt
  • 点开sbt,VM parameter那添加-Dsbt.override.build.repos=true
  • Launcher那选择custom,添加自己的sbt,我的目录是/usr/local/Cellar/sbt/0.13.13/libexec/sbt-launch.jar
  • 如果版本不一致可修改工程里面的build.properties

晚上扫了一眼任正非的《我的父亲母亲》真是感动的不行。

 

来自:https://www.jianshu.com/p/8d3ded620051

 

sbt问题-Scala sbt run – “Unsupported major.minor version 52.0”

 

当一开始安装配置好 sbt时,刚在 终端 输入 sbt 命令 ,想启动sbt时就发现报错了。

[error] (run-main-0) java.lang.UnsupportedClassVersionError: akka/event/LogSource : Unsupported major.minor version 52.0
java.lang.UnsupportedClassVersionError: akka/event/LogSource : Unsupported major.minor version 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:803)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2625)
        at java.lang.Class.getMethod0(Class.java:2866)
        at java.lang.Class.getMethod(Class.java:1676)

原因是,系统版本的jdk 与 sbt 不兼容,将系统中的 jdk 7 升级到 jdk 8 就行了。

参考:https://stackoverflow.com/questions/39197422/scala-sbt-run-unsupported-major-minor-version-52-0

sbt用法-基本命令与构建Scala项目

一、构建简单Scala项目

创建文件SimpleProject/hw.scala

object Hi{
  def main(args: Array[String]) = println("Hello world!")
}

运行

D:\MyCode\Scala\SimpleProject>sbt
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
[info] Loading global plugins from C:\Users\test\.sbt\0.13\plugins
[info] Set current project to hello (in build file:/D:/MyCode/Scala/SimpleProject/)
> run
[info] Updating {file:/D:/MyCode/Scala/SimpleProject/}root...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Compiling 1 Scala source to D:\MyCode\Scala\BuildProject\target\scala-2.10\classes...
[info] Running Hi
Hello world!
[success] Total time: 43 s, completed 2016-4-9 20:16:21

二、构建完整Scala项目

sbt项目目录与Maven项目目录类似,创建下面的目录:

├── src
│  ├── main
│  │  ├── java
│  │  ├── resources
│  │  └── scala
│  ├── test
│  │  ├── java
│  │  ├── resources
│  │  └── scala
├── build.sbt
├── project
│  ├── build.properties
│  ├── plugins.sbt

其中bulid.sbt为构建定义,project目录是你的工程内另一个工程的项目,它知道如何构建你的工程,即project项目为元构建,相关文档为http://www.scala-sbt.org/0.13/docs/zh-cn/Organizing-Build.html

简单的bulid.sbt文件

name := "hello"      // 项目名称

organization := "xxx.xxx.xxx"  // 组织名称

version := "0.0.1"  // 版本号

scalaVersion := "2.10.6"   // 使用的Scala版本号

// 添加项目依赖
libraryDependencies += "ch.qos.logback" % "logback-core" % "1.0.0"

libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.0.0"

// 或者

libraryDependencies ++= Seq(
                            "ch.qos.logback" % "logback-core" % "1.0.0",
                            "ch.qos.logback" % "logback-classic" % "1.0.0",
                            ...
                            )

// 添加测试代码编译或者运行期间使用的依赖
libraryDependencies ++= Seq("org.scalatest" %% "scalatest" % "1.8" % "test")

创建项目目录并添加配置文件完成后,生成eclipse项目:在项目基目录下运行下列命令

sbt eclipse

通过上面的命令能够生成eclipse目录,使用eclipse导入项目,即可开始开发。

三、sbt的交互模式

在项目目录下运行sbt命令进行交互模式

# 在交互模式中能够运行常见的命令,例如,进行compile:
>  compile

其它常见命令:

clean 删除所有生成的文件 (在 target 目录下)。
compile 编译源文件(在 src/main/scalasrc/main/java 目录下)。
test 编译和运行所有测试。
console 进入到一个包含所有编译的文件和所有依赖的 classpath 的 Scala 解析器。输入 :quit, Ctrl+D (Unix),或者 Ctrl+Z (Windows) 返回到 sbt。
run <参数>* 在和 sbt 所处的同一个虚拟机上执行项目的 main class。
package src/main/resources 下的文件和 src/main/scala 以及 src/main/java 中编译出来的 class 文件打包成一个 jar 文件。
help <命令> 显示指定的命令的详细帮助信息。如果没有指定命令,会显示所有命令的简介。
reload 重新加载构建定义(build.sbtproject/*.scalaproject/*.sbt 这些文件中定义的内容)。在修改了构建定义文件之后需要重新加载。

参考:https://www.cnblogs.com/codingexperience/p/5372617.html

sbt概述与安装配置

一、sbt简介

sbt是类似ANT、MAVEN的构建工具,全称为Simple build tool,是Scala事实上的标准构建工具。

主要特性:

  1. 原生支持编译Scala代码和与诸多Scala测试框架进行交互;
  2. 使用Scala编写的DSL(领域特定语言)构建描述
  3. 使用Ivy作为库管理工具
  4. 持续编译、测试和部署
  5. 整合scala解释器快速迭代和调试
  6. 支持Java与Scala混合的项目

二、sbt下载安装

下载地址:官网  ,安装方法:

### mac平台 直接安装 ,自动设置了环境变量
$ brew install sbt@1
### 安装过程如下
cooldeMacBook-Pro:~ cool$ brew install sbt@1
==> Downloading https://github.com/sbt/sbt/releases/download/v1.2.6/sbt-1.2.6.tgz
==> Downloading from https://github-production-release-asset-2e65be.s3.amazonaws.com/27955

curl: (28) Connection timed out after 5004 milliseconds
Trying a mirror...
==> Downloading https://sbt-downloads.cdnedge.bluemix.net/releases/v1.2.6/sbt-1.2.6.tgz
######################################################################## 100.0%
==> Caveats
You can use $SBT_OPTS to pass additional JVM options to sbt.
Project specific options should be placed in .sbtopts in the root of your project.
Global settings should be placed in /usr/local/etc/sbtopts
==> Summary
🍺  /usr/local/Cellar/sbt/1.2.6: 521 files, 49.8MB, built in 51 seconds
cooldeMacBook-Pro:~ cool$ 


# =============================
## 非 mac 平台,下载后解压到自己定义的文件夹,然后将解压目录的bin目录加入PATH环境

# Linux环境,使用`sudo vim /etc/profile`打开配置文件,添加下面的命令
export SBT_HOME=/opt/sbt
export path=path:$SBT_HOME/bin

# Windows 平台 打开高级系统设置,
# 在环境变量中添加系统变量
# SBT_HOME  =>   D:\sbt
# 并加入path路径,
# path=> path;%SBT_HOME%\bin

检验是否安装成功:使用sbt命令,该命令会执行一段时间,下载jar包,加载插件,最后查看是否进行交互界面,如下所示:

skydeMacBook-Pro:~ sky$ sbt
[info] Updated file /Users/cool/project/build.properties: set sbt.version to 1.2.6
[info] Loading settings for project global-plugins from idea.sbt ...
[info] Loading global plugins from /Users/cool/.sbt/1.0/plugins
[info] Updating ProjectRef(uri("file:/Users/cool/.sbt/1.0/plugins/"), "global-plugins")...
[info] Done updating.
[info] Loading project definition from /Users/cool/project
[info] Updating ProjectRef(uri("file:/Users/cool/project/"), "cool-build")...
[info] Done updating.
[info] Set current project to cool (in build file:/Users/cool/)
[info] sbt server started at local:///Users/cool/.sbt/1.0/server/a50398cff041de74d7d0/sock
sbt:cool> 

三、sbt简单配置

配置ivy目录:
可以对sbt进行配置,能够配置ivy的文件目录,ivy是sbt的默认管理项目依赖工具,它默认是在user home下建立library repository【我看到的默认目录变成了用户根目下面的–> .ivy2 】,但用户可以配置ivy的library local repository。

修改sbt配置文件: [sbt安装目录]/conf/sbtconfig.txt,在配置文件中添加一行

-Dsbt.ivy.home=[你自己挑选的目录]/repository

 配置镜像库:
感觉sbt运行时会从maven官网下载大量的jar包,可能会非常缓慢,可以添加国内的maven库,从而能够加快运行速度,在”~/.sbt”下创建repositories文件,添加下面的内容:

[repositories]
local                         # 本地ivy库
maven-local: file://~/.m2/repository       # 本地Maven库 
osc: http://maven.aliyun.com/nexus/content/groups/public/    #阿里云的maven库,用于加快速度
typesafe: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
sonatype-oss-releases
maven-central
sonatype-oss-snapshots

配置插件:
sbt有自己的插件,这里介绍能够生成eclipse目录的插件:sbteclipse插件https://github.com/typesafehub/sbteclipse。

添加sbteclipse插件可以通过两种方式添加:

配置全局文件:~/.sbt/0.13/plugins/plugins.sbt
配置项目文件: PROJECT_DIR/project/plugins.sbt

# 只要在其中一个文件添加 下面的一行 就行了
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0")
# 安装sbteclipse插件后可以在sbt交互界面使用`eclipse`命令生成eclipse项目

 

参考:

https://www.scala-sbt.org/1.x/docs/Installing-sbt-on-Mac.html

https://www.cnblogs.com/codingexperience/p/5372617.html

 

git概述-git工作流

一、 概念

在项目开发过程中使用 Git 的方式。

二、分类

1、集中式工作流

像 SVN 一样,集中式工作流以中央仓库作为项目所有修改的单点实体。所有修改都提交到 Master 这个分支上。这种方式与 SVN 的主要区别就是开发人员有本地库。Git 很多特性并没有用到。

2、GitFlow 工作流

Gitflow 工作流通过为功能开发、发布准备和维护设立了独立的分支,让发布迭代过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。

3、Forking 工作流

Forking 工作流是在 GitFlow 基础上,充分利用了 Git 的 Fork 和 pull request 的功能以达到代码审核的目的。更适合安全可靠地管理大团队的开发者,而且能接受不信任贡献者的提交。

三、GitFlow 工作流详解

1、主干分支 master
主要负责管理正在运行的生产环境代码。永远保持与正在运行的生产环境 完全一致。
2、开发分支 develop
主要负责管理正在开发过程中的代码。一般情况下应该是最新的代码。
3、bug 修理分支 hotfix
主要负责管理生产环境下出现的紧急修复的代码。 从主干分支分出,修理完毕并测试上线后,并回主干分支。并回后,视情况可以删除该分支。
4、准生产分支(预发布分支)release
较大的版本上线前,会从开发分支中分出准生产分支,进行最后阶段的集成测试。该版本上线后,会合并到主干分支。生产环境运行一段阶段较稳定后,可以视情况删除。
5、功能分支 feature
为了不影响较短周期的开发工作,一般把中长期开发模块,会从开发分支中独立出来。开发完成后会合并到开发分支。

git原理-hash与文件管理与分支管理

一、hash

哈希是一个系列的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下几个共同点:
①不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定。
②哈希算法确定,输入数据确定,输出数据能够保证不变
③哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大
④哈希算法不可逆
Git 底层采用的是 SHA-1 算法。
哈希算法可以被用来验证文件。原理如下图所示:

二、Git 保存版本的机制

1、集中式版本控制工具的文件管理机制

以文件变更列表的方式存储信息。这类系统将它们保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异。

2、Git 的文件管理机制

Git 把数据看作是小型文件系统的一组快照。每次提交更新时 Git 都会对当前的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改,
Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。所以 Git 的工作方式可以称之为快照流。

3、Git 文件管理机制细节

(1)Git 的“提交对象”

(2)提交对象及其父对象形成的链条

三、Git 分支管理机制

1、分支的创建

2、分支的切换

 

git客户端-eclipse项目的git操作

最开始的时候,应该先从远程库fetch 到本地,本地merge后,才能提交到远程库,否则远程库会拒绝接收提交。

一、提交到本地库

1、新项目首先需要添加到暂存区

2、提交至本地库

3、图形化界面拖拽和快捷键

新建好的类可以,可以不用 Add to index 直接 commit 就行了,此时

还可以使用快捷键  cmmand + alt + 3

二、推送到远程库

三、从远程库clone到本地

eclipse 因为新建版本稍有变化,有的版本不能直接clone到工作区,需要在clone到别的地方,然后再从外部导入到工作区。

四、转换clone到本地的项目

因为上传到远程仓库的文件不包括eclipse的项目配置文件,所以clone到本地后,我们需要convert项目。

五、解决冲突

冲突文件→右键→Team→Merge Tool
修改完成后正常执行 add/commit 操作即可。

六、新建分支与合并分支

项目-->Team-->Switch To Other 页面中:可以对分支进行新建、删除、重命名和切换。 

主开发者:

本地新建 hot_fix分支:

修改好后,提交到本地库,然后push到远程仓库。【push到远程库方法也可以是如下方法】

协开发者:

从远程库下载hot_fix分支:

从本地master分支 切换到 远程hot_fix分支:

然后先切换到本地master分支:

接着再合并本地的 hot_fix分支:

最后 push 到 远程库。