java - programacion - Incluir una biblioteca al programar y compilar, pero excluir de la compilación, en el proyecto NetBeans basado en Maven
proyecto en java netbeans (2)
Use el alcance provided
lugar del alcance de compile
predeterminado para esta dependencia. Para eso es exactamente para eso.
<dependency>
<scope>provided</scope>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
</dependency>
En NetBeans 8, en un proyecto basado en Maven, ¿cómo se usa un contenedor mientras se programa, pero se omite el build?
Necesito acceder a algunas clases específicas en un controlador JDBC específico en mi aplicación web Vaadin . Pero en las aplicaciones web, normalmente no empaquetamos controladores JDBC dentro de nuestra compilación (el archivo .war ). En cambio, los controladores JDBC pertenecen a una carpeta controlada por el contenedor Servlet (el entorno de tiempo de ejecución).
Entonces, necesito el controlador JDBC (un archivo jar ) para estar en el classpath mientras estoy editando mi código y compilando. Pero ese archivo jar debe omitirse de la compilación.
etiqueta de exclusions
Intenté agregar las exclusions
y las etiquetas de exclusion
a mi elemento de dependency
. Pero esto no funcionó - El postgresql-9.4-1201.jdbc41.jar
apareció en la carpeta WEB-INF/lib
.
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4-1201-jdbc41</version>
<exclusions>
<exclusion>
<groupId>org.postgresql</groupId> Exclude from build
<artifactId>postgresql</artifactId>
</exclusion>
</exclusions>
</dependency>
¿Nuevo perfil?
Esta respuesta de ZNK - M en la pregunta, Establecer classpath de tiempo de ejecución personalizado para un proyecto maven en netbeans , puede ser lo que necesito.
Pero crear un nuevo perfil de proyecto parece exagerado, lo que parece una pequeña tarea para mí. Y, siempre quiero excluir este jar de mi resultado de compilación, no solo cuando lo pruebo o en otros escenarios limitados.
Debería agregar un nuevo perfil run-with-netbeans en su pom que declare las dependencias adicionales (use el alcance proporcionado para no incluirlas en la versión).
Luego deberá agregar el nuevo perfil a su IDE para ejecutar el pom con la opción -P run-with-netbeans en la línea de comando.
Pero estoy familiarizado solo con los conceptos básicos de la edición de un archivo POM . Si ese enfoque es el camino a seguir, sería útil que alguien pudiera ampliar los detalles y los pasos necesarios.
Use la etiqueta <scope>
en el archivo POM, con un valor de provided
.
Extracto de la sección Alcance de la dependencia de la página, Introducción al mecanismo de dependencia :
compilar
Este es el alcance predeterminado, utilizado si no se especifica ninguno. Las dependencias de compilación están disponibles en todos los classpaths de un proyecto. Además, esas dependencias se propagan a proyectos dependientes.previsto
Esto es muy similar a la compilación, pero indica que espera que el JDK o un contenedor proporcione la dependencia en tiempo de ejecución. Por ejemplo, al crear una aplicación web para Java Enterprise Edition, debe establecer la dependencia de la API de Servlet y las API de Java EE relacionadas en el alcance proporcionado porque el contenedor web proporciona esas clases. Este alcance solo está disponible en el classpath de compilación y prueba, y no es transitivo.tiempo de ejecución
[...]prueba
[...]sistema
[...]importar
[...]
Me gusta esto:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4-1201-jdbc41</version>
<scope>provided</scope>
</dependency>