maven 2 - mkyong - fallo de compilación maven
mkyong maven (16)
Tengo un problema extraño: no se pudo leer algún archivo de clase durante la compilación maven.
- Tengo un proyecto
A
y un proyectoB
- El proyecto
B
depende del proyectoA
archivo JAR objetivo.
Durante la compilación del proyecto B
, no puede leer lib en el archivo A
JAR del proyecto, aunque la parte que se le dirige es perfecta.
También he comprobado y verificado el guión de Maven y es perfecto.
Error:
[INFO] Compiling 137 source files to V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/target/classes
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/oblix/da/wsdl/OblixLoginAc
cess.java:[51,60] cannot find symbol
symbol : class BusinessException
location: class us.mn.state.dhs.tss.common.oblix.da.wsdl.OblixLoginAccess
V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/app/da/ldap/BaseLdapImpl.j
ava:[187,14] cannot find symbol
symbol : class Phone
location: class us.mn.state.dhs.tss.common.app.da.ldap.BaseLdapImpl
V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/app/da/ldap/BaseLdapImpl.j
ava:[204,14] cannot find symbol
symbol : class Phone
location: class us.mn.state.dhs.tss.common.app.da.ldap.BaseLdapImpl
[INFO] ------------------------------------------------------------------------
[DEBUG] Trace
org.apache.maven.BuildFailureException: Compilation failure
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:579)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:499)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:478)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:330
)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:291)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:142)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:336)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:129)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:287)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation failure
at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:516)
at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:114)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:451)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:558)
... 16 more
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 minute 56 seconds
[INFO] Finished at: Mon Oct 19 09:46:53 CDT 2009
[INFO] Final Memory: 11M/20M
[INFO] ------------------------------------------------------------------------
Dentro de las clases tuyas en las que está la queja, maven es una dependencia que pertenece a algunos mvn clean install -DskipTests=true
reconstruyen con el comando maven. Utilizo este comando mvn clean install -DskipTests=true
debería funcionar en este caso cuando algunos símbolos de clases Está perdido
Después de ejecutar el siguiente comando: - mvn clean package install
Encontré el problema:
''dependencies.dependency.scope'' for org.springframework.boot:spring-boot-starter-data-rest:pom must be one of [provided, compile, runtime, test, system] but is ''import''. @ line 13, column 11
Una de las dependencias fue marcada como ''importar''. Cambiar el ''alcance'' solucionó el problema para mí.
El error es bastante claro: "no se puede encontrar el símbolo". Algunas dependencias no se pueden resolver (incluso tiene la línea y la columna en el rastreo de la referencia que no se puede resolver):
V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/oblix/da/wsdl/OblixLoginAc
cess.java:[51,60] cannot find symbol
symbol : class BusinessException
location: class us.mn.state.dhs.tss.common.oblix.da.wsdl.OblixLoginAccess
V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/app/da/ldap/BaseLdapImpl.j
ava:[187,14] cannot find symbol
symbol : class Phone
location: class us.mn.state.dhs.tss.common.app.da.ldap.BaseLdapImpl
V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/app/da/ldap/BaseLdapImpl.j
ava:[204,14] cannot find symbol
symbol : class Phone
location: class us.mn.state.dhs.tss.common.app.da.ldap.BaseLdapImpl
A continuación un par de cosas para verificar:
- Compruebe o vuelva a verificar que estas clases están en el frasco A (la misma versión que en el pom)
- Verifique o vuelva a verificar la declaración de importación en las fuentes B (debe coincidir con el paquete de clases en A)
- Verifique o vuelva a verificar el pom.xml de B y especialmente la declaración de la dependencia en A (su versión)
- Compruebe que la dependencia de A no esté excluida de forma transitiva en algún lugar del pom de B
- ¿Es A una dependencia SNAPSHOT? Si no, elimine A de su repositorio local y reconstruya
Maven está trabajando bien, tienes un error en alguna parte.
Es fácil obtener este error en un proyecto de múltiples módulos. Si, por ejemplo, realizó cambios en los módulos A, B y C, pero luego intenta compilar solo el módulo B, es susceptible a este error. Supongamos que el módulo B depende del módulo A. Dado que solo se compiló el módulo B, los archivos de clase del módulo A ahora están desactualizados y es posible que no sean válidos.
La compilación de todos los módulos (o módulos en el orden de dependencia jerárquico adecuado) resuelve este error, si esta es la naturaleza de su problema.
Mi conjetura es una versión incorrecta del proyecto Un frasco en su repositorio local de maven. Parece que la dependencia se resuelve; de lo contrario, creo que Maven no comienza a compilar, pero generalmente este error de compilación significa que tiene una combinación de versiones. intente hacer una maven clean install
de su proyecto A y ver si cambia algo para el proyecto B ... También podría ser útil un poco más de información sobre su configuración:
- ¿Cómo se lanza el maven? que comando en una shell, un IDE (con o sin plugin), en un servidor CI?
- ¿Qué comando de maven estás usando?
PODRÍA ser debido a memoria insuficiente del montón.
Suena extraño, pero inténtalo, podría funcionar:
export MAVEN_OPTS=''-Xms384M -Xmx512M -XX:MaxPermSize=256M''
Fuente: https://groups.google.com/group/neo4j/msg/e208be9ee1c101d7 )
Puede intentar ejecutar el comando "mvn site" y ver qué dependencias transitivas tiene, y luego resolver los posibles conflictos (omitiendo una dependencia implícita en algún lugar). Solo una conjetura (es un poco difícil saber cuál podría ser el problema sin ver la información de su pom) ...
Si sus dependencias están bien (verifique con mvn dependency: list) como las mías, entonces es un problema técnico, si está utilizando Eclipse:
- Haga clic derecho en el proyecto> Maven> Actualizar proyecto ...
- Comprueba todo pero sin conexión
- DE ACUERDO
Debes ser bueno.
No conozco los comandos mvn equivalentes, si alguien pudiera publicarlos podría ser útil.
También importa el orden de las dependencias. He tenido el mismo problema. Y básicamente tuve que poner primero la scope test
y luego las dependencias de scope compile
en el pom.xml
. Si pongo primero la scope compile
y luego la scope test
fallará.
Tengo un error como este, pero después
1 /
mvn eclipse:clean
mvn eclipse:eclipse -Dwtpversion=2.0
2 / ejecutar eclipse, y abrir el proyecto
3 /
mvn package
es trabajo
Tratar de usar:
mvn clean package install
Este comando debería instalar tus artefactos en tu repositorio local de Maven.
PD: Veo que esta es una pregunta antigua, pero puede ser útil para alguien en el futuro.
Tuve el mismo problema (a pesar de que el proyecto estaba compilando / funcionando bien en Eclipse), no fue cuando se usó la construcción de la línea de comandos. La razón fue que no estaba usando la estructura de carpetas correcta para mvn: "src / main / java / com" etc. Está viendo estas carpetas de forma predeterminada (estaba usando "/ scr / main / com" etc., que problemas causados).
Tuve el mismo problema y así es como te sugiero que lo arregles:
Correr:
mvn dependency:list
y lea atentamente si hay algún mensaje de advertencia que indique que para algunas dependencias no habrá dependencias transitivas disponibles.
Si es así, vuelva a ejecutarlo con el indicador -X:
mvn dependency:list -X
para ver información detallada sobre qué se quejan los expertos (puede haber mucha salida para el indicador -X)
En mi caso, hubo un problema en el módulo maven dependiente pom.xml - con dependencia gestionada. Aunque había una versión para la dependencia administrada definida en pom principal, Maven no pudo resolverla y se quejaba de que faltaba una versión en el pom.xml dependiente
Así que acabo de configurar la versión faltante y el problema desapareció.
Tuve un problema similar y nunca encontré nada en la web después de una búsqueda excesiva.
pom.xml
archivo pom.xml
y en las dependencias cambié el alcance de <dependency>
it: <scope>test</scope>
a <scope>compile</scope>
.
Anteriormente lo estaba usando solo para pruebas, pero cambio la estructura del proyecto y nunca supe que tenía que cambiar esto.
prueba: este alcance indica que la dependencia no es necesaria para el uso normal de la aplicación y solo está disponible para las fases de compilación y ejecución de la prueba.
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.
Aquí hay una referencia de Apache Maven Docs: https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope
Yo tuve el mismo problema...
Cómo solucionarlo: agregue las siguientes propiedades al pom.xml
<properties>
<!-- compiler settings -->
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>
diríjase al repositorio de Maven y abra la jarra [consejo: puede usar winzip] del módulo fuente para verificar la clase específica presente.
En mi caso no lo es. Luego lo encontré abajo.
si está utilizando el complemento org.apache.felix / maven-bundle-plugin
Asegúrese de que el módulo fuente tenga el paquete de exportación definido
Ejemplo: com.xxx.camel.dao