Tôi đang làm việc trên một dự án Java sử dụng Maven để xây dựng nó. Các bit chức năng tôi đang phát triển sẽ khá cồng kềnh trong Java, nhưng đơn giản trong Clojure, vì vậy tôi muốn thực hiện nó trong Clojure và có Java sử dụng các lớp kết quả được tạo ra liền mạch.Sự cố khi thêm dự án Clojure vào Java
Dưới đây là các bài kiểm tra đơn vị tôi cần phải vượt qua (src/kiểm tra/java/com/foo/thời tiết/DataProcessorTest.java):
package com.foo.weather;
import static org.junit.Assert.*;
import org.junit.Test;
import java.util.*;
public class DataProcessorCljTest {
@Test
public void processWithTotalsAndSubTotals() throws Exception {
assertEquals(2, DataProcessor.process(createRawData()).size());
}
private List<List<String>> createRawData() {
List<List<String>> data = new ArrayList<List<String>>();
data.add(new ArrayList<String>(Arrays.asList("2011-11-01", "Temperature", "19.2")));
data.add(new ArrayList<String>(Arrays.asList("2011-11-01", "Pressure", "1.1")));
return data;
}
}
Và đây là mã Clojure (src/main/clojure/com/foo/thời tiết/dữ liệu processor.clj):
(ns com.foo.weather.DataProcessor
(:gen-class
:methods [#^{:static true} [process [java.util.List] java.util.List]]))
(defn process [raw-data]
(java.util.ArrayList. []))
tôi đã thêm phần sau đây để pom.xml của tôi để xây dựng mã Clojure:
<project>
<!-- lots of stuff omitted -->
<build>
<plugins>
<!-- ... -->
<plugin>
<groupId>com.theoryinpractise</groupId>
<artifactId>clojure-maven-plugin</artifactId>
<version>1.3.6</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<repositories>
<!-- ... -->
<repository>
<id>clojure-releases</id>
<url>http://build.clojure.org/releases</url>
</repository>
</repositories>
<dependencies>
<!-- ... -->
<dependency>
<groupId>org.clojure</groupId>
<artifactId>clojure</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>
</project>
Tuy nhiên, khi cố gắng chạy thử nghiệm đơn vị của tôi, trình biên dịch phàn nàn "không thể tìm thấy biến biểu tượng DataProcessor", vì vậy có vẻ như mã Clojure của tôi không được biên dịch đúng cách.
Một điều mà tôi đã nhận thấy là thư mục src/main/clojure của tôi dường như không được coi là thư mục nguồn trong IDE (IntelliJ) của tôi. Tôi nhấn chuột phải vào src/main/clojure trong khung nhìn project và chọn "Mark directory as> Source root", nhưng sau khi nhập lại phụ thuộc Maven (tức là "Update dependencies" trong Eclipse), thư mục không còn được đánh dấu là root nguồn .
Điều này khiến tôi tin rằng sự cố của tôi nằm trong cấu hình Maven của tôi.
Có ai giúp được không?
Một tùy chọn khác cho các dự án Java + Clojure sử dụng Maven là [Zi] (https://github.com/pallet/zi) – noahlz