在Eclipse中,在.java类中使用与其实际文件系统位置不同的包声明
我目前正在开发一个代码生成器,并为此构建了一个测试套件。其组织方式的总体思路如下图所示: java是一个标准的JUnit测试类。我希望它是开着的在Eclipse中,在.java类中使用与其实际文件系统位置不同的包声明,java,eclipse,Java,Eclipse,我目前正在开发一个代码生成器,并为此构建了一个测试套件。其组织方式的总体思路如下图所示: java是一个标准的JUnit测试类。我希望它是开着的 package tests.system.bytecode.temp_tests; 正如任何Java开发人员所期望的那样 另一方面,IOrderable.java和TreeSet.java将由我的代码生成器使用(也就是说,在编译成.class文件之后)。但对我来说,管理他们当前的大型包声明有点麻烦。当我添加更多的测试并开始尝试组织(嵌套)更多的测试
package tests.system.bytecode.temp_tests;
正如任何Java开发人员所期望的那样
另一方面,IOrderable.java
和TreeSet.java
将由我的代码生成器使用(也就是说,在编译成.class文件之后)。但对我来说,管理他们当前的大型包声明有点麻烦。当我添加更多的测试并开始尝试组织(嵌套)更多的测试时,情况只会变得更糟
如果IOrderable.java
和TreeSet.java
可以独立于它们的实际路径进行包声明,这将是一个完美的选择,从而大大消除未来的维护问题
有没有可能通过Eclipse实现这一点?也许使用Ant或Maven
谢谢
在我的Eclipse项目中编译.java类,其中包含与它们在项目中的物理路径不对应的包声明 这应该是不可能的
但是,您可以通过不同的源文件夹来分离这些类 在Eclipse中,您可以有多个源文件夹。编译时,它们是混合的,因此您需要:一个
src
文件夹用于普通类,一个src gen
文件夹用于生成的类
对于maven,你也可以这样做
默认情况下,您有:
src/main/java
src/test/java
src/main/java2
或target/generated src
因此,您需要org.codehaus.mojo
构建助手maven插件
。例如:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${basedir}/target/generated-src</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
org.codehaus.mojo
构建助手maven插件
1.7
添加源
生成源
添加源
${basedir}/target/generated src
您到底有什么问题?在我的Eclipse项目中编译.java类时使用的包声明与它们在项目中的物理路径不一致。我的意思是,当您根据标准约定将文件放在它们实际所属的位置时,会出现什么问题呢?在.java文件中以及其他类型的文件中都会有非常大的包声明。例如,如果我后来决定将测试的名称从temp_测试更改为abc_测试,我将不得不手动编辑许多其他文件,我目前没有在这里显示这些文件。更糟糕的是,试图将temp_测试移动到任何其他文件夹也会使我不得不更改。这是真的,但任何IDE都会为您这样做。嗯,我明白了。但我希望将给定测试的所有文件放在同一个文件夹中,在开发/维护给定测试时,必须始终在两个文件夹之间切换,这将是一个PITA:(@Owned elysium:取决于您的工作方式,我总是使用F3和CTRL+Shift+T来打开一个类,因此不同的根文件夹应该没有问题。我也使用它。但是在每个文件夹中,我的测试类始终称为Tests,所以CTRL-Shift T在那里毫无价值。@Owned elysium:我明白了,在这种情况下,您当然需要有不同的名称。