当前位置: 首页 > 知识库问答 >
问题:

在POM配置中,多个包是否应该具有相应的groupid和artifactid

马寒
2023-03-14

我正在使用maven构建restful应用程序,用于从mysql中选择数据。我对POM配置感到非常困惑,如下所示:

<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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.tutorialacademy.rest</groupId>
	<artifactId>helloworld</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>helloworld Maven Webapp</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<repositories>
		<repository>
			<id>maven2-repository.java.net</id>
			<name>Java.net Repository for Maven</name>
			<url>http://download.java.net/maven/2/</url>
			<layout>default</layout>
		</repository>
	</repositories>

	<dependencies>
		<dependency>
			<groupId>html" target="_blank">junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.sun.jersey</groupId>
			<artifactId>jersey-server</artifactId>
			<version>1.9</version>
		</dependency>
		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpclient</artifactId>
			<version>4.3.3</version>
		</dependency>
		<dependency>
			<groupId>com.googlecode.json-simple</groupId>
			<artifactId>json-simple</artifactId>
			<version>1.1</version>
		</dependency>
		<dependency>
			<groupId>org.json</groupId>
			<artifactId>json</artifactId>
			<version>20080701</version>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.0.1</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>2.6.2</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>

	<build>
		<sourceDirectory>src/main/java</sourceDirectory>

		<plugins>

			<plugin>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.4</version>
				<configuration>
					<warSourceDirectory>WebContent</warSourceDirectory>
					<failOnMissingWebXml>false</failOnMissingWebXml>
				</configuration>
			</plugin>

			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>

		</plugins>

	</build>

</project>

而我的多个软件包如下所示:

问题是我是否需要为每个包添加另一个groupid和artifactid。当我访问路径http://localhost:8080/helloworld/rest/exportfile/json它在com.tutorialacademy.rest包类下被编码为@path时,它确实有效:

但是当我访问webService包下的路径http://localhost:8080/helloworld/rest/helloService/hello/。这给了我错误:

The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

我的web.xml如下:

<servlet>
    <servlet-name>helloworld</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.tutorialacademy.rest</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>helloworld</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

共有1个答案

田丰
2023-03-14
<init-param>
    <param-name>com.sun.jersey.config.property.packages</param-name>
    <param-value>com.tutorialacademy.rest</param-value>
</init-param>

参数-value列出了应该扫描带有@Path注释的类的包,以便泽西可以注册这些类。您只列出了一个您说有效的包。您可以在用逗号分隔的包上添加更多

<param-value>
    com.tutorialacademy.rest,
    webService
</param-value>

尽管通常的做法是为您的项目提供顶级软件包。例如

com.foo
com.foo.dao
com.foo.model
com.foo.resources

递归扫描您在param值中列出的包。所以你可以直接使用com。在这种情况下,所有子包也会被扫描。

 类似资料:
  • 我使用的是maven版本3.5.3,在构建项目时,我在WEB-INF(V3.1和V3.4)中获得了两个版本的apache commons-lang3,即使我在父pom.xml的“依赖关系管理”中明确指定了V3.4。 两者都具有相同的groupId和ArtifacTID。 我很困惑。这是Maven的预期行为吗?这种情况是在什么情况下发生的?我的印象是,如果依赖项具有相同的groupId和Artifa

  • 我试图有多个消费者的Kafka主题的多个分区与相同的groupId,这将帮助我扩大消费的消息。 根据Kafka的文件,它说: 如何让多个消费者拥有相同的消费者groupId,以实现负载平衡?

  • 我在Spring Boot中的资源类路径位置中有多个yml文件,就像下面的Spring Boot结构一样。起初,我只为abc的申请而写。当时,这个文件的所有值都加载到了相应的类中,但是当我添加到另一个文件应用程序xyz时。然后,yml也会加载到相应的配置类中,但此时只加载应用程序xyz的值。两个配置类中的yml。因此,需要帮助在单个构建中配置相应配置文件中两个文件的值: 申请内容abc。yml a

  • 问题内容: 使用原生(ES6)Promise。我应该以错误拒绝: 还是我应该拒绝一个字符串: 浏览器行为有什么区别? 问题答案: 是的,绝对可以。字符串不是错误,通常当您遇到错误时,这意味着出了点问题,这意味着您将真正享受良好的堆栈跟踪。没有错误-没有堆栈跟踪。 就像try / catch一样,如果您添加到抛出拒绝中,则希望能够记录堆栈跟踪,而抛出字符串会为您带来麻烦。 我在移动设备上,因此答案很

  • 在我们的项目中,我们有用于 REST 层、EJB 层和域(实体)层的单独模块。 以下是对 REST 层的依赖关系: 问题1:提供了所有这些?有可能简化吗?所有这些依赖项都应该显式声明吗?如果没有,RestEasy默认提供了什么?事实上,我使用的是JBoss AS 6,因此这些依赖项仅用于编译时。它们的范围是。 同样适用于我们的域层: 问题2:为什么在我们的pom中明确声明了这些。xml?hiber

  • 假设双方之间有一份合同,允许根据某些业务逻辑将一些资金(最初与我一起)转移给双方,例如80%的资金转移给a,20%的资金转让给B。现在,对于不同的一方对X,这些百分比是不同的