Apache Pig Java UDF - import org.apache.pig.EvalFunc; cannot be resolved - apache-pig

Eclipse is showing the error message import org.apache.pig.EvalFunc; cannot be resolved.How can I get rid of this error ? Below is the POM file
<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>Pig</groupId>
<artifactId>PigUDF</artifactId>
<version>0.0.1-SNAPSHOT</version>
<repositories>
<repository>
<id>cloudera-repo-releases</id>
<url>https://repository.cloudera.com/artifactory/repo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>
<build>
</build>
</project>

Add pig dependency to your POM file
<dependency>
<groupId>org.apache.pig</groupId>
<artifactId>pig</artifactId>
<version>0.15.0</version><!-- or any version you want -->
</dependency>

EvalFunc class is imported from Pig Packages. So You need to add the pig dependency in pom.xml.
<!-- https://mvnrepository.com/artifact/org.apache.pig/pig -->
<dependency>
<groupId>org.apache.pig</groupId>
<artifactId>pig</artifactId>
<version>0.13.0</version>
</dependency>

Related

Parent Pom get version of Child Pom/dependency

I have a project like the following
mainProject - Multi Module Project structure:
pom.xml
newfolder/pom.xml
otherProject:
otherProject.pom.xml with mainProject.pom.xml as its parent pom and newFolder/pom.xml as a dependency.
see below:
mainProject pom.xml:
<groupId>test.test</groupId>
<artifactId>mainProject</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>newFolder</module>
</modules>
<dependency>
<groupId>test.test</groupId>
<artifactId>newFolder</artifactId>
<version>${project.version}</version>
</dependency>
newfolder/pom.xml:
<groupId>test.test</groupId>
<artifactId>newFolder</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<parent>
<groupId>test.test</groupId>
<artifactId>mainProject/artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
otherProject:
<parent>
<groupId>test.test</groupId>
<artifactId>mainProject</artifactId>
<version>1.0-SNAPSHOT/version>
</parent>
<dependency>
<groupId>test.test</groupId>
<artifactId>newFolder</artifactId>
</dependency>
The problem is when I try to build otherProject it cannot find the version of newfolder because it is not pulling in the version of the project that I built it is still looking for newfolder 1.0-SNAPSHOT
Any help would be great!
I was able to get the behavior I was hoping for by adding ${project.parent.version} to the parent pom dependency. example:
<groupId>test.test</groupId>
<artifactId>mainProject</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>newFolder</module>
</modules>
<dependency>
<groupId>test.test</groupId>
<artifactId>newFolder</artifactId>
<version>${project.parent.version}</version>
</dependency>

RabbitConnectionFactory maven dependency

which dependencies that I need in order to use RabbitConnectionFactory? I have the below pom, but RabbitConnectionFactory cannot be resolved:
<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>test.rabbit</groupId>
<artifactId>connector</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-cloudfoundry-connector</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-spring-service-connector</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-cloudfoundry-connector</artifactId>
</dependency>
</dependencies>
My repo is here:
https://github.com/pkid/rabbitconnectionfac
Thank you for your help in advance!
There is no such class RabbitConnectionFactory.
Where are you seeing an error?
With spring-rabbit, you would generally use its CachingConnetionFactory. It uses an underlying ConnectionFactory from the amqp-client library, which is a transitive dependency.
spring-cloud-service-connector, in RabbitConnectionFactoryCreator creates instances of these objects.

Maven configuration error : repo.maven.apache.org

I am trying to create a simple java project using maven.
But I am getting one error in the problems tab with the maven configuration.
The error description is "repo.maven.apache.org"
The error type is "maven configuration" problem.
Can any one help ?
Here is my 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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bhawani.sample.maven</groupId>
<artifactId>FirstSimpleSpringProject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>FirstSimpleSpringProject</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.0.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.0.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.0.6.RELEASE</version>
</dependency>
</dependencies>
</project>
In case you have not already tried, try to build your project from command prompt, you will get what exactly you are missing. Additionally, need to verify if provided local repository path has been provided and if you are building it offline/behind company proxy server, add proper proxy setting as well.

Unable to Deploy war using maven 3.x

I am trying to deploy my web-application to tomcat using maven 3.x here is the snap shot of the pom.xml file
<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.demo</groupId>
<artifactId>demoapp</artifactId>
<version>2.2.3</version>
<packaging>war</packaging>
<name>Blank Webapp</name>
<properties>
<struts2.version>2.2.3</struts2.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-config-browser-plugin</artifactId>
<version>${struts2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-junit-plugin</artifactId>
<version>${struts2.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-mock</artifactId>
<version>2.0.8</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>2.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<packagingExcludes>WEB-INF/web.xml</packagingExcludes>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<configuration>
<warFile>${project.build.directory}/${project.build.finalName}.war</warFile>
<url>http://localhost:8080/manager/html</url>
<server>localhost</server>
<path>/WebApp</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
i tried the following goal in maven mvn deploy but i got the following build fail with following error
Deployment failed: repository element was not specified in the POM inside distributionManagement element or in -DaltDeploymentRepository=id::layout::url parameter -> [Help 1]
after doing some googling i added the following entry to my pom.xml
<distributionManagement>
<repository>
<id>myRepoId</id>
<name>myCompanyReporsitory</name>
<!-- <url>scp://nothing/</url>
<url>${user.home}/m2/repository</url> -->
</repository>
</distributionManagement>
but i am not sure what should be the URL since using ${user.home}/m2/repository gave another error with build failure
Failed to deploy artifacts/metadata: No connector available to access repository myRepoId (C:\Users\admin/m2/repository) of type default using the available factories WagonRepositoryConnectorFactory -> [Help 1]
How to solve the problem?
The mvn deploy tries to send the result of the package goal to the url of repository described in your POM.
I aims not at deploying a Web application on its server but to share the library produced with other.
If what you need is to deploy you webapp, then the tomcat plugin is a solution.
BTW: The connector issue when trying to deploy is due to the fact that to enable SCP you need to add the wagon-scp connector.

Maven doesn't interpret all properties in some child poms

We are working on quite big project with many modules and we use maven 2.2.1 to build it.
We have declared some properties in master pom.xml for having dependency version in one place.
This is how this part of our pom.xml looks like:
<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.blah.as.common</groupId>
<artifactId>caoas</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: caoas</name>
<modules>
<module>common</module>
<module>services</module>
<module>datamanagement</module>
</modules>
<properties>
<jslee.version>1.1</jslee.version>
<rhino.version>2.1</rhino.version>
<diameterro.ra.version>2.2.0.1</diameterro.ra.version>
<cdr.ra.version>2.1.1.0</cdr.ra.version>
<cgin.ra.version>1.3.2</cgin.ra.version>
<cgin.oc-common.version>1.3.0</cgin.oc-common.version>
<cgin.in-datatypes.version>5.1.3.2</cgin.in-datatypes.version>
<ra.tracelevel>Finest</ra.tracelevel>
</properties>
...
</project>
We use those properties in few modules and in most of them they are interpreted correctly but there is an issue with one in which only some are interpreted and some are not.
Here's part of that pom.xml:
<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.blah.as.services</groupId>
<artifactId>moc-sbb</artifactId>
<version>1.0.1</version>
<packaging>jainslee-sbb-jar</packaging>
<name>AS :: services :: MOC-SBB</name>
<parent>
<groupId>com.blah.as.services</groupId>
<artifactId>moc</artifactId>
<version>1.0.1</version>
</parent>
<dependencies>
<dependency>
<groupId>opencloud</groupId>
<artifactId>diameter-ro-ra-type</artifactId>
<version>${diameterro.ra.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>oc-common</artifactId>
<version>${cgin.oc-common.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>in-datatypes</artifactId>
<version>${cgin.in-datatypes.version}</version>
<scope>provided</scope>
</dependency>
...
<dependency>
<groupId>opencloud</groupId>
<artifactId>map_rel4.ratype</artifactId>
<version>${cgin.ra.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.blah.as</groupId>
<artifactId>correlation-ra-ratype</artifactId>
<version>1.0</version>
<type>jainslee-ratype-jar</type>
</dependency>
</project>
All properties starting with 'cgin' are not interpreted in this pom.xml (the work fine in other modules) other properties are fine.
The whole build has worked perfectly, but recently we had to change modules version, so change affected current module version, parent module version and some dependencies version but those were only local dependencies with version written explicitly.
Have anyone cone across such problem or have any idea where to search for reason fir such situation?
br
Lucja
edit1
I have used mvn -X -U clean install to look more into the build and have found no significant error, the only thig I have found is that in some modules there is expression "properties used" and in some it's not present, the problematic module also doesn't have it. I don't know how it would affect this module, because only some properties are not read and some are.
[DEBUG] properties used {... cgin.oc-common.version=1.3.0, ... cgin.ra.version=1.3.2, ... cdr.ra.version=2.1.1.0, ... diameterro.ra.version=2.2.0.1, ... cgin.in-datatypes.version=5.1.3.2, ...}
edit2
Here's the whole pom.xml for module 'moc'
<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.blah.as.services</groupId>
<artifactId>moc</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: services :: MOC</name>
<parent>
<groupId>com.blah.as.services</groupId>
<artifactId>services</artifactId>
<version>1.0.1</version>
</parent>
<modules>
<module>moc-sbb</module>
<module>moc-du</module>
</modules>
</project>
and for module services
<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.blah.as.services</groupId>
<artifactId>services</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: services</name>
<parent>
<groupId>com.blah.as.common</groupId>
<artifactId>caoas</artifactId>
<version>1.0.0</version>
</parent>
<modules>
<module>moc</module>
<module>ussd</module>
</modules>
</project>
module structure in this case looks like this:
caoas (root)
|
services
|
moc
|
moc-sbb
Here's example for another module in which properties work fine (structure shown from root to leaf node)
<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.blah.as.common</groupId>
<artifactId>common</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: Common</name>
<parent>
<groupId>com.blah.as.common</groupId>
<artifactId>caoas</artifactId>
<version>1.0.1</version>
</parent>
<modules>
<module>lib</module>
<module>ra</module>
<module>utils</module>
<module>patches</module>
</modules>
<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.blah.as.common</groupId>
<artifactId>common-lib</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: Common :: libs</name>
<parent>
<groupId>com.blah.as.common</groupId>
<artifactId>common</artifactId>
<version>1.0.1</version>
</parent>
<modules>
<module>base</module>
<module>tracing</module>
<module>commons</module>
<module>diameter-ro-ext</module>
<module>location-retrieval</module>
<module>normalization</module>
<module>ticketing</module>
<module>profiles</module>
<module>notifications</module>
<module>screening</module>
<module>soap-tools</module>
<module>fsm</module>
<module>xmlbeans</module>
<module>sccp-address-selection</module>
</modules>
<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.blah.as.common</groupId>
<artifactId>location-retrieval</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: Common :: Location Retrieval</name>
<parent>
<groupId>com.blah.as.common</groupId>
<artifactId>common-lib</artifactId>
<version>1.0.1</version>
</parent>
<modules>
<module>location-retrieval-profiles-api</module>
<module>location-retrieval-intf-lib</module>
<module>location-retrieval-sbb-jar</module>
<module>location-retrieval-du</module>
</modules>
<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>
<parent>
<groupId>com.blah.as.common</groupId>
<artifactId>location-retrieval</artifactId>
<version>1.0.1</version>
</parent>
<groupId>com.blah.as.common</groupId>
<artifactId>location-retrieval-sbb-jar</artifactId>
<version>1.0.1</version>
<packaging>jainslee-sbb-jar</packaging>
<name>AS :: Common :: Location Retrieval SBB</name>
<dependencies>
<dependency>
<groupId>com.blah.as.common</groupId>
<artifactId>base-api</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>com.blah.as.common</groupId>
<artifactId>location-retrieval-intf-lib</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>com.blah.as.common</groupId>
<artifactId>location-retrieval-profiles-api</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>oc-common</artifactId>
<version>${cgin.oc-common.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>in-datatypes</artifactId>
<version>${cgin.in-datatypes.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>cgin-common.ratype</artifactId>
<version>${cgin.ra.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>cgin-common.events</artifactId>
<version>${cgin.ra.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>cgin-common</artifactId>
<version>${cgin.ra.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>map_rel4.api</artifactId>
<version>${cgin.ra.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>map_rel4.events</artifactId>
<version>${cgin.ra.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>map_rel4.ratype</artifactId>
<version>${cgin.ra.version}</version>
</dependency>
<dependency>
<groupId>com.blah.as.common</groupId>
<artifactId>base-tracing-intf</artifactId>
<version>1.0.1</version>
<type>jar</type>
</dependency>
</dependencies>
It uses the same properties and here they work fine.
Your services pom refers to com.blah.as.common:caoas:1.0.0 as its parent. In your post, you showed us version 1.0.1, not 1.0.0. Perhaps the property doesn't exist in version 1.0.0?
I always determine dependencies versions in root pom. And not determine versions in child projects. Child projects get dependency versions from parent pom by default.
E. g.
Parent pom:
...
<groupId>ba.server</groupId>
<artifactId>ba-server</artifactId>
<packaging>pom</packaging>
<name>ba-server</name>
<version>0.16.22-SNAPSHOT</version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.zeromq</groupId>
<artifactId>jzmq</artifactId>
<version>2.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>proxool</groupId>
<artifactId>proxool </artifactId>
<version>0.8.3</version>
</dependency>
...
Child pom:
...
<parent>
<groupId>ba.server</groupId>
<artifactId>ba-serer</artifactId>
<version>0.16.22-SNAPSHOT</version>
</parent>
<packaging>jar</packaging>
<modelVersion>4.0.0</modelVersion>
<artifactId>ba-server-kernel</artifactId>
<name>ba-server-kernel</name>
<dependencies>
<dependency>
<groupId>org.zeromq</groupId>
<artifactId>jzmq</artifactId>
</dependency>
...
It looks that your child module refers to a wrong parent POM. In your parent POM you have declared the artifactId as 'caoas':
<artifactId>caoas</artifactId>
But in your child POM you refer to another parent, with artifactId 'moc':
<parent>
<groupId>com.blah.as.services</groupId>
<artifactId>moc</artifactId>
<version>1.0.1</version>
</parent>