Clojure的Maven配置
来源:互联网 发布:开淘宝网店程序 编辑:程序博客网 时间:2024/05/19 03:21
先说Clojure
Clojure发音类似”closure”[‘kləʊʒə(r)])],查看了一下官网并没发现这个名字的由来,也许是闭包的意思。它是JVM中的Lisp,也可以算是现在最实用的Lisp,它可以重用所有的JVM上的库,在设计上也是很考究,如面向并发设计了STM。而且也有了著名的开源项目Storm。因此,值得慕名而来学习学习,拓展一下思路。
Hello World
去Clojure官网http://www.clojure.org/下载Clojure,最新版本到了1.8。查看了一下可以发现它的目录如下:
其实能用的只有一个clojure-1.8.0.jar。在此目录下,打开cmd执行java -cp clojure-1.8.0.jar clojure.main,会得到其REPL界面,就可以进行做实验了。
不过我们使用这个jar只能做点实验,作为一个工程要构建、要管理其他的库、因此得使用构建工具和包管理工具。在Java里面的实事标准工具是Maven,在Clojure的官方构建工具则叫leiningen。相比起来leiningen比较简洁,但是我的感觉Clojure更应该作为一种Java的补充和Java进行混合编程。因此个人更愿意使用Maven作为构建工具和包管理工具。这种策略也是Storm所采用的。
Maven构建
使用Maven构建实际也比较简单,因为Maven其实也有一个jar,所以需要引入一个dependency和一个plugin。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.apache.storm</groupId> <artifactId>test</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>test</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.clojure</groupId> <artifactId>clojure</artifactId> <version>1.6.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>com.theoryinpractise</groupId> <artifactId>clojure-maven-plugin</artifactId> <extensions>true</extensions> <configuration> <sourceDirectories> <sourceDirectory>src/main/clj</sourceDirectory> </sourceDirectories> <testSourceDirectories> <testSourceDirectory>test/main/clj</testSourceDirectory> </testSourceDirectories> <warnOnReflection>false</warnOnReflection> <copyDeclaredNamespaceOnly>true</copyDeclaredNamespaceOnly> <copiedNamespaces> <copiedNamespace>none</copiedNamespace> </copiedNamespaces> </configuration> <executions> <execution> <id>compile-clojure</id> <phase>compile</phase> <goals> <goal>compile</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> </plugin> </plugins> </build> </project>
需要clojure-maven-plugin来编译和运行Clojure,最好把java和clojure分开。该plugin的github如下https://github.com/talios/clojure-maven-plugin。
比较重要的命令如下
- clojure:compile
- clojure:run
- clojure:repl
要和java混合编译需要设置exceution
<executions> <execution> <id>compile-clojure</id> <phase>compile</phase> <goals> <goal>compile</goal> </goals> </execution> </executions>
以下设置在eclipse上可能会有错误,主要是
<phase>compile</phase>
的compile的阶段问题,但使用maven build没有问题。默认java编译会在clojure编译之前,如果要改变这个循序可以改excecution中的phase标签。
执行clojure:repl就可以进行测试了,如果混合编程,则需要先执行clojure:compile.建立一个测试Java类
public class JavaInClojure { private final int index; public JavaInClojure(){ index = 3; } public int getIndex(){ return index; }}
在建立一个测试clojure模块
(ns clj.test (import org.apache.storm.test.JavaInClojure))(defn hello [str] (println str ",hello world") (println (.getIndex (JavaInClojure. ))))
执行mvn compile clojure:repl得到一个REPL窗口
我们可以看到自己编写的java类和clojure模块可以进行混合执行了。
如果改动clojure,可以使用(use clj.test :reload)
就可在REPL中执行,如果改动java代码还得重新编译。
- Clojure的Maven配置
- Clojure的Maven配置
- Emacs+Clojure的配置Tip
- emacs+clojure的安装配置(win7)
- 【Clojure】我的第一段clojure...泪目~~~
- Clojure的关键字
- 定制clojure的REPL
- Clojure 语言的设计
- Clojure环境的搭建
- 定制clojure的REPL
- Emacs 配置Clojure开发环境一 clojure-mode
- clojure
- Clojure
- clojure
- clojure
- Clojure
- 关于Clojure的简单介绍
- Clojure - Java平台的Erlang
- Excel插件制作-面积图系列
- Sqlite3一些常用函数的分析与自己理解
- Hive连接Mysql---FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask.
- c++初学者笔记
- socket中的短连接与长连接,心跳包示例详解
- Clojure的Maven配置
- 把div固定于页面脚部(代码)
- 多线程详解java.util.concurrent
- poj1146(next_permutation自定义排序函数)
- java.lang.IllegalArgumentException: Does not contain a valid host :port authority
- 使用xmind
- linux命令: touch, mkdir, cp, mv, rm
- BZOJ_P3651 网络通信(LinkCutTree)
- 给定一个字符串找出出现次数最多的字符