Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Eclipse中,在.java类中使用与其实际文件系统位置不同的包声明_Java_Eclipse - Fatal编程技术网

在Eclipse中,在.java类中使用与其实际文件系统位置不同的包声明

在Eclipse中,在.java类中使用与其实际文件系统位置不同的包声明,java,eclipse,Java,Eclipse,我目前正在开发一个代码生成器,并为此构建了一个测试套件。其组织方式的总体思路如下图所示: java是一个标准的JUnit测试类。我希望它是开着的 package tests.system.bytecode.temp_tests; 正如任何Java开发人员所期望的那样 另一方面,IOrderable.java和TreeSet.java将由我的代码生成器使用(也就是说,在编译成.class文件之后)。但对我来说,管理他们当前的大型包声明有点麻烦。当我添加更多的测试并开始尝试组织(嵌套)更多的测试

我目前正在开发一个代码生成器,并为此构建了一个测试套件。其组织方式的总体思路如下图所示:

java是一个标准的JUnit测试类。我希望它是开着的

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:我明白了,在这种情况下,您当然需要有不同的名称。