Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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
Java 枚举的Maven包不存在_Java_Maven - Fatal编程技术网

Java 枚举的Maven包不存在

Java 枚举的Maven包不存在,java,maven,Java,Maven,我的目标: -我想将API测试框架X代码(maven项目)转换为jar,可以在另一个API测试框架Y -此jar将部署到Nexus -我希望将框架X的test&main类集成在一个jar 从SO中,我了解到不能将它们组合成一个jar,因此必须将它们放在单独的jar中 我相应地修改了POM 使用此命令时出现编译错误: mvn清洁安装-DskipTests 错误片段: [ERROR] COMPILATION ERROR : [INFO] -------------------------------

我的目标
-我想将API测试框架X代码(maven项目)转换为
jar
,可以在另一个API测试框架Y
-此
jar
将部署到Nexus
-我希望将框架Xtest&main类集成在一个
jar

SO中,我了解到不能将它们组合成一个
jar
,因此必须将它们放在单独的jar中

我相应地修改了POM

使用此命令时出现编译错误:

mvn清洁安装-DskipTests

错误片段:

[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /C:/main/projectX/src/main/java/com/myapp/core/EnumUserClass.java:[8,46] package com.myapp.testutils.ClassWithEnum does not exist
[ERROR] /C:/main/projectX/src/main/java/com/myapp/core/EnumUserClass.java:[226,6] cannot find symbol
  symbol:   class EnumUserClass
  location: class com.myapp.core.EnumUserClass...etc.
Maven编译器在查找类时没有问题,但在查找此枚举时有问题

有人能告诉我如何正确解决此错误吗?我是否以正确的方式实现了“我的目标”?

本问题中给出的
示例项目
(projectX)是我的
实际项目

maven命令适用于
示例项目
,但不适用于
实际项目

项目结构示例:(简化)

示例项目pom.xml:(缩写)


4.0.0
com.myapp
我的罐子
0.0.1-快照
罐子
安装
org.apache.maven.plugins
maven编译器插件
3.8.0
1.7
1.7
org.apache.maven.plugins
maven jar插件
2.4
试验罐
myjar
http://maven.apache.org
UTF-8
我的Nexus网站
https://host.com/path1
我的Nexus发行版
我的Nexus发行版
https://host.com/path2
我的Nexus快照
我的Nexus快照
https://host.com/path3

您可以从“test/java”中的“main/java”访问类,但它不能反向工作。如果您查看日志,它正在main/java中查找一个包。将包从“test/java”移动到“main/java”。那就行了

您可以从“test/java”中的“main/java”访问类,但它不能反向工作。如果您查看日志,它正在main/java中查找一个包。将包从“test/java”移动到“main/java”。那就行了

好吧,我明白你想做什么,但我认为这不是正确的做法。 你想用这个项目(X)来测试另一个项目(Y),对吗?然后,这个项目(X)中的所有主要类都用于测试项目(Y)

但问题是:您似乎试图将测试类(位于com.myapp.testutils文件夹中)放在主文件夹中。这会导致以下错误:

[错误] /C:/main/projectX/src/main/java/com/myapp/core/EnumUserClass.java:[8,46] 包com.myapp.testutils.ClassWithEnum不存在

(com.myapp.testutils)中的测试类用于测试project X的主代码。这些类的存在是为了检查project X的主代码是否正在执行它应该执行的操作(在此上下文中-->测试另一个项目)

单元测试(com.myapp.testutils中的类)不应该包装在jar中,但它是为了确保应用程序正常工作

您的重点不应该是将projectx中的测试放在一个jar中,而是为projectx进行单元测试,然后将经过适当测试的projectx导入projecty

编辑:
如果com.myapp.testutils对于使project X能够测试project Y很重要:请将包从“test/java”移动到“main/java”。那么它应该可以正常工作了。

好的,我明白你想做什么,但我认为这不是正确的方法。 你想用这个项目(X)来测试另一个项目(Y),对吗?然后,这个项目(X)中的所有主要类都用于测试项目(Y)

但问题是:您似乎试图将测试类(位于com.myapp.testutils文件夹中)放在主文件夹中。这会导致以下错误:

[错误] /C:/main/projectX/src/main/java/com/myapp/core/EnumUserClass.java:[8,46] 包com.myapp.testutils.ClassWithEnum不存在

(com.myapp.testutils)中的测试类用于测试project X的主代码。这些类的存在是为了检查project X的主代码是否正在执行它应该执行的操作(在此上下文中-->测试另一个项目)

单元测试(com.myapp.testutils中的类)不应该包装在jar中,但它是为了确保应用程序正常工作

您的重点不应该是将projectx中的测试放在一个jar中,而是为projectx进行单元测试,然后将经过适当测试的projectx导入projecty

编辑:
如果com.myapp.testutils对于使project X能够测试project Y很重要:请将包从“test/java”移动到“main/java”。那么应该可以了。

你的问题实际上有3个问题(1个是你的目标,2个是关于它的问题)。但是,它们是组合在一起的,可以固定在一起

  • 有人能告诉我如何正确解决此错误吗?
  • 这里的问题是Maven有自己的

    它有一个严格的后果:

    • 编译
      -编译项目的源代码
    • 测试projectX:
          src/test/Java
              com.myapp.testutils
                  class ClassWithEnum - This contains a public enum MyEnum
          src/test/resources
              text files here
          src/main/Java
              com.myapp.core
                  class EnumUserClass - This is jackson annotated & uses MyEnum
      
      <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>com.myapp</groupId>
          <artifactId>my-jar</artifactId>
          <version>0.0.1-SNAPSHOT</version>
          <packaging>jar</packaging>
      
          <build>
              <defaultGoal>install</defaultGoal>
              <plugins>
                  <plugin>
                      <groupId>org.apache.maven.plugins</groupId>
                      <artifactId>maven-compiler-plugin</artifactId>
                      <version>3.8.0</version>
                      <configuration>
                          <source>1.7</source>
                          <target>1.7</target>
                      </configuration>
                  </plugin>
      
                  <plugin>
                      <groupId>org.apache.maven.plugins</groupId>
                      <artifactId>maven-jar-plugin</artifactId>
                      <version>2.4</version>
                      <executions>
                          <execution>
                              <goals>
                                  <goal>test-jar</goal>
                              </goals>
                          </execution>
                      </executions>
                  </plugin>
              </plugins>
          </build>
      
          <name>myjar</name>
          <url>http://maven.apache.org</url>
      
          <properties>
              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          </properties>
      
          <dependencies>
              <!--Many dependencies here-->
          </dependencies>
      
          <distributionManagement>
              <site>
                  <id>My-Nexus-Site</id>
                  <url>https://host.com/path1</url>
              </site>
              <repository>
                  <id>My-Nexus-Releases</id>
                  <name>My-Nexus-Releases</name>
                  <url>https://host.com/path2</url>
              </repository>
              <snapshotRepository>
                  <id>My-Nexus-Snapshots</id>
                  <name>My-Nexus-Snapshots</name>
                  <url>https://host.com/path3</url>
              </snapshotRepository>
          </distributionManagement>
      </project>
      
      projectX:
          src/main/java
              com.myapp.core
                  class EnumUserClass - This is jackson annotated & uses MyEnum
              com.myapp.testutils
                  class ClassWithEnum - This contains a public enum MyEnum
          src/main/resources
              text files here