我有一个Eclipse项目,其中包含我在其他项目中使用的类和接口。多年来,这个代码库已经发展得相当大。我遇到的问题是当我将项目导出到可运行的JAR时,Eclipse将从我的代码库复制每个类文件,即使我只从它导入一个简单的类。
示例:我的代码库由类文件codebase/Car.class
,codebase/House.class
和codebase/Garage.class
组成。在一个单独的项目中,我有源文件project/App.java
,如下所示:
import codebase.Car;
import codebase.House;
public class App
{
public static void main(String[] args)
{
Car car = new Car();
House house = new House();
}
}
是否可以仅使用project/App.class
,codebase/Car.class
和codebase/House.class
(但不使用codebase/Garage.class
导出我的项目,因为它未被使用),或者我是否必须编写自定义构建脚本?
答案 0 :(得分:1)
如果您的主项目是使用maven构建的,则可以使用Apache maven-shade-plugin,尤其是最小化功能来完成工作。我已经使用它多年了,它总是做得很好。它将构建一个包含所有实际类的大jar,它不仅会从您自己的jar中驱逐类,还会从已部署的标准库中驱逐类。