Showing posts with label Continuous Integration. Show all posts
Showing posts with label Continuous Integration. Show all posts

Add 3rd Jars to Maven2 Build Path without Installing Them


Add 3rd Jars to Maven2 Build Path without Installing Them

Sometimes, we want to add a 3rd jar to our project, but it is not included in public maven repository, and we don't want to bother to create a local or intranet repository, and install the jar into it.

 

For example, we want to add javaparser to our application, it is a library to parse java source, and extract methods, fields, javadoc, and comments.

We can define its scope as system, and specify its path.

<dependency>

    <groupId>japa.parser</groupId>

    <artifactId>javaparser</artifactId>

    <version>1.0.8</version>

    <scope>system</scope>

    <systemPath>${basedir}/lib/javaparser-1.08.jar</systemPath>

</dependency>

Where ${basedir} is pointing to your project's root.

 

But this has some limitations, for example, when use maven assembly plugin to generate assemblies, jars under scope "system" are not included.

 

The solution is to put the dependency in a "file system repository" local to the project, then use install-file to install the jar to local default repository first (~/.m2/repository), then move the directory tree to ${basedir}/my-repo.

mvn install:install-file  -Dfile=%LIBPATH%\javaparser1.0.8.jar -DgroupId=japa.parser  -DartifactId=javaparser -Dversion=1.0.8 -Dpackaging=jar  -DgeneratePom=true 

I would declare that repository in my pom.xml like this:

<repositories>

  <repository>

    <id>my</id>

    <url>file://${basedir}/my-repo</url>

  </repository>

</repositories>

<dependency>

    <groupId>japa.parser</groupId>

    <artifactId>javaparser</artifactId>

    <version>1.0.8</version>

    <scope>compile</scope>

</dependency>

 

Resources:

Maven 2 assembly with dependencies: jar under scope “system” not included.

Can I add jars to maven 2 build classpath without installing them?

http://code.google.com/p/javaparser/

http://retrotranslator.sourceforge.net/


Read it Before Code (Algorithm) Interview


Ask how many questions the will ask

Clarify the questions

  • Take time to draw some examples to understand the question
    • all different cases, extreme cases
  • Ask the range of input
  • Duplicate in the data
  • Whether I can change/reuse the input
  • Ask whether I have used all useful info, whether I missed anything

When Write code

  • Extract some functions aggressively
    • Otherwise you may repeat a lot of code
    • Focus the main part first, define what parameters it needs
    • Leave the implementation later, interviewer may just ignore it
  • Add To-Check tag where the code may be trick or error prone
    • < or <=, len or len-1;
  • What states, variables we need
  • How do we change them
  • Leave some spaces (where you think you may need add some code later, and if the white board is big)

Recheck the code carefully

  • First focus on the main logic, error-prone part
  • Also check all code
  • Use different (simple) use cases to find the problem in the code/algorithm

Compare different approaches

  • Always think whether there are better approaches (and say it)
  • The different approaches may be easier to code or have better runtime (or space) complexity
  • When you think you can implement it different ways or have different approaches, make sure it works and you choose the one that’s easier to implement
    • Sometimes, the other approach may be not work

Communication

  • Le the interviewer your thinking process, different approaches you are trying

What data structures to use:

  • Stack
  • PriorityQueue
    • Examples: LeetCode 767 - Reorganize String
    MultiChar mc1 = pq.poll(), mc2 = pq.poll();
    if (--mc1.count > 0) pq.add(mc1);
    if (--mc2.count > 0) pq.add(mc2);
  • TreeMap, TreeSet\
    • Use it when need keep some order
    • Need (binary) search the key
    • Examples: Interval
Interval
  • TreeMap, sort by start or end

Labels

ANT (6) Algorithm (69) Algorithm Series (35) Android (7) Big Data (7) Blogger (14) Bugs (6) Cache (5) Chrome (19) Code Example (29) Code Quality (7) Coding Skills (5) Database (7) Debug (16) Design (5) Dev Tips (63) Eclipse (32) Git (5) Google (33) Guava (7) How to (9) Http Client (8) IDE (7) Interview (88) J2EE (13) J2SE (49) JSON (7) Java (186) JavaScript (27) Learning code (9) Lesson Learned (6) Linux (26) Lucene-Solr (112) Mac (10) Maven (8) Network (9) Nutch2 (18) Performance (9) PowerShell (11) Problem Solving (11) Programmer Skills (6) Scala (6) Security (9) Soft Skills (38) Spring (22) System Design (11) Testing (7) Text Mining (14) Tips (17) Tools (24) Troubleshooting (29) UIMA (9) Web Development (19) Windows (21) adsense (5) bat (8) regex (5) xml (5)