<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tycho on 🍃 Breeze Bless</title><link>https://imzhizi.github.io/categories/tycho/</link><description>Recent content in Tycho on 🍃 Breeze Bless</description><generator>Hugo</generator><language>en-us</language><copyright>Copyright © 2018-2026, imzhizi</copyright><lastBuildDate>Sat, 07 Mar 2020 01:10:48 +0800</lastBuildDate><atom:link href="https://imzhizi.github.io/categories/tycho/index.xml" rel="self" type="application/rss+xml"/><item><title>个人对于 Maven 的理解</title><link>https://imzhizi.github.io/%E4%B8%AA%E4%BA%BA%E5%AF%B9%E4%BA%8E-maven-%E7%9A%84%E7%90%86%E8%A7%A3/</link><pubDate>Sat, 07 Mar 2020 01:10:48 +0800</pubDate><guid>https://imzhizi.github.io/%E4%B8%AA%E4%BA%BA%E5%AF%B9%E4%BA%8E-maven-%E7%9A%84%E7%90%86%E8%A7%A3/</guid><description>&lt;p>Maven 一直都在使用, 但如果说是不是真的懂 Maven, 很难谈得上. 或许什么时候系统地学习一下, 但在那之前, 打算先记下自己目前对于 Maven 的理解, 之后再进行对比, 看有哪些疏漏和错误.&lt;/p>
&lt;h3 id="maven-基础">Maven 基础&lt;/h3>
&lt;p>最直观的, Maven 使用 pom.xml 文件来管理项目中所使用的依赖, 这跟 Python 的 requirement.txt、JS 的 &lt;code>package.json&lt;/code> 或者是 Ruby 的 &lt;code>Gemfile&lt;/code> 都类似.&lt;/p>
&lt;p>不过, 其他语言的依赖文件规定的往往是某个包的最低版本, 在实际安装的时候, 很可能会安装最新版, 这个时候实际版本会形成另外一个 lock 文件, 像 &lt;code>package.json.lock&lt;/code>. 但是 Maven 不会, 因为在 Maven 的一个依赖节点中, 会要求声明具体的版本.&lt;/p>
&lt;p>其次, 因为和构建相关, 所以 pom.xml 中需要声明项目所属的组织、项目的名称、版本, 同时还要在 &lt;code>properties&lt;/code> 节点中声明使用的 Java 版本、编码等信息, &lt;code>build&lt;/code> 也是经常见到的一个节点, 但我不是很理解它的作用.&lt;/p>
&lt;pre tabindex="0">&lt;code>&amp;lt;!--项目信息--&amp;gt; 
&amp;lt;groupId\&amp;gt;域名/项目名&amp;lt;/groupId\&amp;gt; 
&amp;lt;artifactId\&amp;gt;项目名/组件&amp;lt;/artifactId\&amp;gt; 
&amp;lt;version\&amp;gt;版本&amp;lt;/version\&amp;gt; 
​ 
&amp;lt;properties\&amp;gt; 
 &amp;lt;!-- 可以声明编码 --&amp;gt; 
 &amp;lt;!-- 声明 jdk 版本--&amp;gt; 
 &amp;lt;maven.compiler.source\&amp;gt;1.8&amp;lt;/maven.compiler.source\&amp;gt; 
 &amp;lt;maven.compiler.target\&amp;gt;1.8&amp;lt;/maven.compiler.target\&amp;gt; 
 &amp;lt;!-- 可以自定义一些版本值 --&amp;gt; 
&amp;lt;/properties\&amp;gt; 
​ 
&amp;lt;!-- 一些构建相关的信息 --&amp;gt; 
&amp;lt;build\&amp;gt; 
 …… 
&amp;lt;/build\&amp;gt; 
​ 
&amp;lt;!-- 最重要的部分, 列出所依赖的包 --&amp;gt; 
&amp;lt;dependencies\&amp;gt; 
 &amp;lt;dependency\&amp;gt; 
 &amp;lt;groupId\&amp;gt;域名/项目名&amp;lt;/groupId\&amp;gt; 
 &amp;lt;artifactId\&amp;gt;项目名/组件&amp;lt;/artifactId\&amp;gt; 
 &amp;lt;version\&amp;gt;版本&amp;lt;/version\&amp;gt; 
 &amp;lt;/dependency\&amp;gt; 
 …… 
&amp;lt;/dependencies\&amp;gt;
&lt;/code>&lt;/pre>&lt;p>同时, 和其他包管理工具相比, Maven 不像 pip、npm、gem 一样可以使用 &lt;code>install xxxx&lt;/code> 命令安装依赖, 而是需要自己向 &lt;code>pom.xml&lt;/code> 中添加 &lt;code>&amp;lt;dependency&amp;gt;……&amp;lt;/dependency&amp;gt;&lt;/code> 节点来添加依赖, 然后执行 &lt;code>mvn install&lt;/code> 命令才能安装.&lt;/p></description></item><item><title>项目反思</title><link>https://imzhizi.github.io/%E9%A1%B9%E7%9B%AE%E5%8F%8D%E6%80%9D/</link><pubDate>Tue, 07 Nov 2017 00:55:29 +0800</pubDate><guid>https://imzhizi.github.io/%E9%A1%B9%E7%9B%AE%E5%8F%8D%E6%80%9D/</guid><description>&lt;h2 id="一个小项目">一个小项目&lt;/h2>
&lt;p>实验室接了一个小项目, 是一个网站, 急着要用, 要求两周做完. 师兄找了我和另一个同学来做, 我做后端, 她做前端. 用什么写呢? 我在这个项目开始之前刚好学了一些 Python Web( Flask ), 看到了一些感觉很不错的特性, 所以我就想用 Python 写. 我是唯一的后端, 我说用 Python, 大家都不反对, 其实也无所谓吧. Python 写起来比 Java 确实要舒服一些, 语法更简洁, 很快就部署了起来. Flask 框架本身就非常小巧, 在 Java 上都属于框架的在 Python 通过几个很小的插件, 加几行代码就解决可以一个问题.&lt;/p>
&lt;p>这是个比较简单的项目, 但我完成的并不好, 甚至在项目上线的第三天, 我在半夜 1 点左右改了一个非常明显的 bug, 或许可以说出现 bug 很正常, 但那个 bug, 是因为那部分功能没测试. 我也不想再回顾, 先写下反思吧, 其他的以后有机会再说.&lt;/p>
&lt;h2 id="出现的问题">出现的问题&lt;/h2>
&lt;h3 id="写测试">写测试&lt;/h3>
&lt;p>如果没有刻意练习, 很难主动写测试, 整个项目我没写一行测试代码, 也出现了很多问题. 很多时候修改了某处代码, 而类似逻辑/用到同一部分的地方却忘记修改导致出现 bug, 这种情况发生过好几次, 但在改的时候又确实没想起来, 这时候如果有写好的测试, 跑一下立刻就知道改动是否有遗漏.&lt;/p>
&lt;h3 id="git-没意义">Git 没意义&lt;/h3>
&lt;p>项目使用了 Git, 但只有一个作用就是让我和前端稍微方便地合并代码 (其实还是面对面肉眼合并). 从 repo 建立到最终项目结束, 项目一直只有一个分支 commit 基本没什么道理, push 随意, 加上没有测试, head 上常常放着刚提交的 bug.&lt;/p></description></item></channel></rss>