分类目录归档:Java

Maven小记

点击量:9

发现maven与Java,别有一番乐趣

入门建议:

https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

现在很多文章其实写的都不如官方的文章,但是人们总是习惯性的从百度获取自己想要的某些资源。

maven编译依赖

一般情况下,maven不会把依赖的包编译到自己的jar包里面,我猜和dll的出发点是一样的,减少内存的占用(减少相同内容在内存中的冗余)。

但是有时候我们不能确保宿主的机器也有同样的东西,因此有时候需要把依赖编译进去。

我们可以这样做,在pom.xml中,添加字段:

  <!--构建依赖-->
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>1.6</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

由此,就可以把需要的依赖包同时编译进去了。

针对mvn,我上传了一个二维码扫描的例程,可供参考:https://github.com/Svtter/zxing-example

Java-如何使用vim开发Java

点击量:7

{% blockquote 本文出自 http://svtter.com svtter.com %}
本文可以随意转载,但是转载请保留本信息.

在网上搜索一番,大部分此类文章都是在说配置,而且配置讲的一看就是没有深入的撸vim。这个时候就
需要我来深刻的讲讲这个问题了 — 国外也有一些开发者写过类似的文章,不过国外的开发者没有深层
的讲讲具体如何配置,仅仅是比较简单的说了一下应该用什么。

闲话少说,我们开始吧。

本文的作者认为,本文的读者已经学会使用vim的初步,至于安装,启动之类的东西作者不再赘述,
望读者海涵。

Vimrc的配置

如果想要用Vim撸Java,首先一个问题就是许多IDE自带的查错功能,这个笔者希望使用Syntastic来实现。
具体的方法是,安装Vundle(vim的插件配置工具,用于安装组合各类插件)。其实这个地方也可以不用
Vundle,但是笔者认为,vimer配置大量插件的最佳方法就是使用vunlde,或者patheon等等。总之,一
定需要一个插件管理。

安装Vundle还是比较轻松的,在github上搜索一下,经过一系列步骤即可。然后同样是位于github,搜
索Syntastic安装即可。

Syntastic是一个检查语法的vim插件,不仅仅支持Java,各种都支持,具体可以看看Syntastic的wiki

学习Ant

Ant是什么东西?简单来说,就是java的makefile。Syntastic的wiki对ant和maven均有支持,但是我个人
学习了Ant,另外eclipse里面的ant等等 — 如果想要探究一下,可以查看一下这篇文章

这里面说了一点笔者在ant上面的一点东西,还有ant学习的链接。

配置Syntastic

PS: 期末周这么悠闲的写博客真的好吗!!

说是配置Syntastic,更不如说是配置Syntastic的Java配置文件。

  1. 首先你需要在你的.vimrc中,添加 let g:syntastic_java_javac_config_file_enabled = 1
    用于使Syntastic读取配置文件生效。
  2. 选择build.xml,使用命令:SyntasticJavacEditConfig,输入:
    let g:syntastic_java_javac_custom_classpath_command =
    \ "ant -q build | grep echo | cut -f2- -d] | tr -d ' ' | tr ':' '\n'"
  3. 重启Vim,语法检查就完成了。

其他的插件

  • Bundle ‘vim-scripts/javacomplete’
  • Bundle ‘vim-scripts/javaDoc.vim’
  • ” Bundle ‘vim-scripts/Java-Syntax-und-Folding’
  • ” Bundle ‘vim-javacompleteex’ “更好的 Java 补全插件

以上插件均可以考虑使用,安装方法可能有所不同 — 但是个人认为最大的语法检查问题已经搞定了,
其他的问题应该都不是问题了吧 = =

Java-Ant文件和Synastic-Vim支持

点击量:8

{% blockquote 本文出自 http://svtter.com svtter.com %}
本文可以随意转载,但是转载请保留本信息.

本文已经更新,请看 — 如何使用vim开发Java.

本来想把本文命名为使用Vim写Java-Project的,但是个人认为这样并没有很高的开发效率,所以只是提
供一个部分的解决方案,剩下的就由大家努力探索吧。。

Java有个自己构建工程的工具叫做Ant, 全名Apache Ant,好东西,最通俗的解释就是Java的
makefile,这里提供的方案,就是使用Ant或者maven来构建工程,然后通过Synastic的设置,来完成
Java的代码检查。另外,java代码补全设置其实也是有的,但是具体的设置我没有好好研究过,主要是
已经陪不起那个时间了。

另外,Eclipse导出Java项目的时候,一个不错的方法就是Export Ant Buildfiles,这就是ant文件。

Maven我没有好好学,但是看wiki似乎Synastic对maven的支持比ant的支持更加优秀,也可能是mvn的构
建方法上存在优势?这个我不清楚。有时间写一篇文章来好好的研究下。

Ant这个东西构建的包有时候检查会出现问题,(如果采用目录编译的方法,那么就无法检查)。

另外,需要不停的在目录下建立.synastic_javac_config,着实烦人。但是如果使用了全局设置,改
变了配置文件的根目录,也是极为不妥当的(不可能只有一个项目在编辑吧?另外改来改去,也是太麻
烦了。)

就是这样。。更多的是吐槽吧。

对于上一篇文章提到的问题可以用设置classpath来解决。具体方法是将classpath添加到syntastic。
use :SyntasticJavacEditClasspath and add workpath.

Java-import和package的用法

点击量:5

本文出自svtter.com
本文可以随意转载,但是转载请保留本信息.

之前一直都是用eclipse开发Java,Vim修炼到今日,本来想要拉出来溜溜Java,奈何package和import的
机制以及 synastic[自动检查代码的插件] 没有对于eclipse对java包类似的支持,所以只得滚回
eclipse,然后使用vrapper了。

闲话少说,听我细细道来package和import;

这篇文章主要是说明类似这种情况,即不同包但是文件路径一部分相同,即:

  • /temp
    • temp.java
    • tests/
      • joking.java

贴出源代码:

  • test.java:

    package temp;

    import temp.tests.joking;

    public class test {
    public static void main (String args[]) {
    joking a = new joking();
    a.test();
    }
    }

  • joking.java

    package temp.tests;

    public class joking {
    int a = 1;
    public void test() {
    System.out.println(a);
    }
    }

一种编译方法

这个时候打开test.java是没有办法通过拼写验证[synastic],需要这样:

javac -d . /tests/joking.java

然后再打开test.java, 可以了。但是这个时候有个很别扭的问题,我们发现这个时候生成了一个文件
temp/temp/tests/joking.class,也就是说我们的目录现在变成了这个样子:

  • /temp
    • temp.java
    • tests/
      • joking.java
    • temp/
      • test/
        • joking.class

请不要告诉我你很爽,因为这个目录给我的感觉很不爽- -试想,如果我们在别的目录下引用这个包,我
们就需要做很多这样的操作,造成的后果就是各个包里面出现无数个temp/test/joking.class
对我而言这是难以忍受的,我也想不太清楚为什么当初java这么设计 — 可能是为了避免耦合等问题?
软件工程这个地方学得不够好,先mark一下,或者有读者可以给我解释一下这个设计。或者说,下面这
个才是正确的。

另一种编译方法

退出到temp的上级目录,然后进行编译

javac -d . temp/tests/joking.class
javac -d . temp/test.java

然后这样运行:

java temp.test

可是这个时候我们打开temp.java, 利用synastic检查,报错。

总结

最后还是自己对synastic依赖性太强了。但是自己不会写= =,也是无奈了。开个issue求支持吧= =

后记

找到方法了 — 使用ant来构建项目。不过synastic的官方文档并没有说的很清楚,issue看起来又比较
费劲,饿死了,吃饭去。。